MySQLにUNIXのwhoamiのような関数やコマンドはある?現在のユーザーを確認する方法
MySQLには、UNIXのwhoamiコマンドに相当する関数は存在しません。UNIXではwhoamiコマンドで現在のユーザーを確認できますが、MySQLで同じ目的を達成するには、user()またはcurrent_user()関数を使用します。
本記事の内容は以下のバージョンで検証しています。
+-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec)
ケース1:CURRENT_USER()関数を使う方法
現在のユーザーを確認するには、次のクエリを実行します。
mysql> select current_user();
実行結果は以下のとおりです。
+----------------+ | current_user() | +----------------+ | root@% | +----------------+ 1 row in set (0.00 sec)
ケース2:USER()関数を使う方法
user()関数を使った場合のクエリは以下のとおりです。
mysql> select user();
実行結果は以下のとおりです。
+----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec)
CURRENT_USER()とUSER()の違い
一見似ている両関数ですが、返される値には違いがあります。
- current_user():サーバーが認証に使用したアカウント(ユーザー名@ホスト)を返します。上記の例では「root@%」となっており、任意のホストからの接続を許可されたrootユーザーであることを示しています。
- user():クライアントが接続時に指定したユーザー名とホスト名を返します。上記の例では「root@localhost」となっており、ローカルホストからrootとして接続していることを示しています。
権限の確認を行いたい場合はcurrent_user()、実際の接続元情報を知りたい場合はuser()を使うとよいでしょう。
-
MySQLでsubstr_replaceのような処理を行う方法|INSERT()関数の使い方を解説
MySQLにsubstr_replaceのような関数はある?MySQLでは、PHPのsubstr_replace()関数のように文字列の一部を置き換えたい場合、INSERT()関数を使用します。INSERT()関数の構文と動作INSERT(str, pos, len, newstr) は、文字列 str の pos 番目の位置から始まる len 文字分の部分文字列を、newstr で置き換えた文字列を返します。pos が文字列の長さの範囲外の場合は、元の文字列がそのまま返されます。len が残りの文字列の長さを超えている場合は、pos 以降のすべての文字列が置き換えられます。引数のいずれかが
-
MySQLでOracleのTRUNC(SYSDATE)と同等の処理を行う方法|DATE()とCURDATE()の使い方
はい、可能です。MySQLでは DATE() 関数を使えばdatetime型の値から日付部分のみを取り出すことができ、CURDATE() 関数を使えば現在の日付を取得できます。この2つを組み合わせることで、Oracleの TRUNC(SYSDATE) と同様の「本日の日付だけを比較する」処理が実現できます。1. 現在の日付を確認するまず、CURDATE()で現在の日付を取得してみましょう。mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-10-20 | +----------