MySQLでユーザーを作成する方法|CREATE USERとGRANTコマンドの使い方を解説
MySQLでは、CREATE USERコマンドを使うことで、新しいユーザーとパスワードを簡単に作成できます。さらに、GRANTコマンドを組み合わせれば、特定のデータベースへのアクセス権限を付与することも可能です。本記事では、ユーザー作成から権限付与、作成結果の確認までの手順を順番に解説します。
1. ユーザー作成の基本構文(CREATE USER)
まず、CREATEコマンドを使用してユーザー名とパスワードを設定します。基本構文は以下の通りです。
CREATE USER 'yourUserName'@'localhost' IDENTIFIED BY 'yourPassword';
2. 権限を付与する基本構文(GRANT)
続いて、特定のデータベースに対するすべての権限をユーザーに付与する構文は以下の通りです。
GRANT ALL PRIVILEGES ON yourDatabaseName.* TO 'yourUserName'@'localhost';
それでは、上記の構文を実際に実行して、ユーザーの作成と権限の付与を行ってみましょう。
ステップ1:ユーザーを作成する
ユーザー「Adam Smith」をパスワード付きで作成するクエリは以下のようになります。
mysql> create user 'Adam Smith'@'localhost' IDENTIFIED BY 'Adam123456'; Query OK, 0 rows affected (0.29 sec)
「Query OK」と表示されれば、ユーザーの作成は成功です。
ステップ2:ユーザーにすべての権限を付与する
次に、データベース「test」に対する全権限を先ほど作成したユーザーに付与します。クエリは以下の通りです。
mysql> GRANT ALL PRIVILEGES ON test.* TO 'Adam Smith'@'localhost'; Query OK, 0 rows affected (0.19 sec)
3. ユーザーが作成されたか確認する方法
ユーザーが正しく作成されているかどうかを確認するには、MySQL.userテーブルを参照します。確認用のクエリは以下の通りです。
mysql> select user,host from MySQL.user;
実行すると、以下のような出力が得られます。
+------------------+-----------+ | user | host | +------------------+-----------+ | Manish | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | Adam Smith | localhost | | User1 | localhost | | am | localhost | +------------------+-----------+ 9 rows in set (0.00 sec)
上記の出力例を見ると、「Adam Smith」というユーザーがホスト「localhost」としてMySQL.userテーブルに登録されていることが確認できます。これで、ユーザー作成と権限付与が正しく完了したことがわかります。
まとめ
MySQLでのユーザー管理は、CREATE USERでユーザーを作成し、GRANTで必要な権限を付与するという2段階の流れが基本です。作成後はMySQL.userテーブルをSELECTすることで、登録状況を簡単にチェックできます。権限の範囲を適切に設定することで、セキュアなデータベース運用につながりますので、用途に応じて権限レベルを調整することをおすすめします。
-
MySQLのUNHEX()に相当するPHP関数とは?hex2bin()の使い方を解説
PHPにおけるMySQLのUNHEX()相当の関数MySQLのUNHEX()関数と同じ処理をPHPで行いたい場合は、hex2bin()関数を使用します。この関数は、16進数形式の文字列をバイナリデータ(元の文字列)に変換するもので、まさにMySQLのUNHEX()に相当する機能を持っています。hex2bin()の基本構文構文は以下の通りです。$anyVariableName = hex2bin(yourHexadecimalValue);引数には16進数の文字列を指定し、戻り値として変換後のバイナリデータが返されます。PHPでの実装例実際にhex2bin()を使用したサンプルコードを見てみまし
-
MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説
MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字