mysql にユーザー名とパスワードを追加するためのステートメント: 1. CREATE USER ステートメント、通常のユーザーを作成し、対応するパスワードを設定できます; 2. INSERT ステートメント、新しい通常のユーザーを作成し、対応するパスワードを設定できます。パスワード; 3. GRANT ステートメントで新しいユーザーを作成し、対応するパスワードとユーザー権限を設定します。
(推奨チュートリアル: mysql ビデオ チュートリアル)
MySQL がインストールされると、root という名前のファイルが作成されますユーザー、このユーザーはスーパー権限を持ち、MySQL サーバー全体を制御できます。
MySQL の日常的な管理と運用では、誰かがデータベースを制御するために root ユーザーを悪意を持って使用することを防ぐために、通常、適切な権限を持つユーザーを作成し、root ユーザーの使用を最小限または最小限に抑えます。データへの安全なアクセスを確保するために、システムにログインすることが可能です。
MySQL では、ユーザーを作成し、ユーザー名とパスワードを追加するために、次の 3 つの方法が提供されています。
CREATE USER ステートメントを使用してユーザーを作成し、ユーザー名とパスワードを追加します。
mysql.user テーブルにユーザーを追加し、ユーザー名とパスワードを追加します。
GRANT ステートメントを使用してユーザーを作成し、ユーザー名とパスワードを追加します。
これら 3 つの方法について、例に基づいて詳しく説明します。
1. CREATE USER ステートメントを使用してユーザーを作成します
CREATE USER ステートメントを使用して MySQL ユーザーを作成し、対応するパスワード。基本的な構文形式は次のとおりです:
CREATE USER <用户> [ IDENTIFIED BY [ PASSWORD ] 'password' ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] 'password' ]]
パラメータの説明は次のとおりです:
1) User
ユーザー アカウントの作成を指定します。形式は user_name'@'host_name です。ここで、user_name はユーザー名、host_name はホスト名 (ユーザーが MySQL に接続するために使用するホストの名前) です。作成プロセス中にホスト名を指定せずにユーザー名のみを指定した場合、ホスト名はデフォルトでホストのグループを表す「%」に設定され、すべてのホストにアクセス許可が与えられます。
2) IDENTIFIED BY 句
は、ユーザーのパスワードを指定するために使用されます。新規ユーザーには初期パスワードは必要ありません。ユーザーがパスワードを持たない場合は、この句を省略できます。
3) PASSWORD 'password'
PASSWORD は、ハッシュ値を使用してパスワードを設定することを意味します。このパラメータはオプションです。パスワードがプレーンな文字列の場合は、PASSWORD キーワードを使用する必要はありません。 「password」は、ユーザーがログインするために使用するパスワードを表し、一重引用符で囲む必要があります。
CREATE USER ステートメントを使用するときは、次の点に注意する必要があります。
CREATE USER ステートメントでは、初期パスワードを指定する必要はありません。ただし、セキュリティの観点から、このアプローチはお勧めできません。
CREATE USER ステートメントを使用するには、mysql データベースの INSERT 権限またはグローバル CREATE USER 権限が必要です。
CREATE USER ステートメントを使用してユーザーを作成した後、MySQL は mysql データベースのユーザー テーブルに新しいレコードを追加します。
CREATE USER ステートメントでは、複数のユーザーを同時に作成できます。複数のユーザーはカンマで区切られます。
新しく作成されたユーザーには権限がほとんどなく、権限を必要としない操作のみを実行できます。たとえば、MySQL にログインし、SHOW ステートメントを使用して、すべてのストレージ エンジンや文字セットなどのリストをクエリします。 2 人のユーザーのユーザー名は同じでホスト名が異なる場合、MySQL はそれらを 2 人のユーザーとして扱い、2 人のユーザーに異なる権限セットを割り当てることを許可します。
例 1
CREATE USER を使用してユーザーを作成します。ユーザー名は test1、パスワードは test1、ホスト名は localhost です。 SQL文と実行処理は以下のとおりです。
mysql> CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1'; Query OK, 1 rows affected (0.06 sec)
結果は、test1 ユーザーが正常に作成されたことを示しています。
実際のアプリケーションでは、クリア テキストでパスワードを指定することは避けるべきですが、PASSWORD キーワードを使用すると、パスワードのハッシュ値を使用してパスワードを設定できます。
例 2
MySQL では、password() 関数を使用してパスワードのハッシュ値を取得できます。test1 を表示するための SQL ステートメントと実行プロセスハッシュ値は次のとおりです。
mysql> SELECT password('test1'); +-------------------------------------------+ | password('test1') | +-------------------------------------------+ | *06C0BF5B64ECE2F648B5F048A71903906BA08E5C | +-------------------------------------------+ 1 row in set, 1 warning (0.00 sec) “*06C0BF5B64ECE2F648B5F048A71903906BA08E5C”就是 test1 的哈希值。下面创建用户 test1,SQL 语句和执行过程如下: mysql> CREATE USER 'test1'@'localhost'IDENTIFIED BY PASSWORD '*06C0BF5B64ECE2F648B5F048A71903906BA08E5C'; Query OK, 0 rows affected, 1 warning (0.00 sec)
実行に成功すると、パスワード「test1」を使用してログインできます。
2. INSERT ステートメントを使用して新しいユーザーを作成します
INSERT ステートメントを使用して、mysql.user にユーザー情報を追加できます。ただし、mysql.user テーブルに対する INSERT 権限が必要です。通常、INSERT ステートメントは、Host、User、authentication_string の 3 つのフィールドの値を追加するだけです。
MySQL 5.7 のユーザー テーブルのパスワード フィールドは、「Password」から「authentication_string」に変更されました。MySQL 5.7 より前のバージョンを使用している場合は、「authentication_string」フィールドを「Password」に置き換えるだけです。
INSERT ステートメントを使用してユーザーを作成するコードは次のとおりです。
INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES ('hostname', 'username', PASSWORD('password'), '', '', '');
mysql データベースのユーザー テーブルの 3 つのフィールド ssl_cipher、x509_issuer、および x509_subject にはデフォルト値がないため、新しいレコードがユーザー テーブルに挿入されます。これら 3 つのフィールドの値を必ず設定してください。そうしないと、INSERT ステートメントは実行されません。
例 3
次の例では、INSERT ステートメントを使用して test2 という名前のユーザーを作成します。ホスト名は localhost で、パスワードも test2 です。 SQL 文と実行プロセスは次のとおりです。
mysql> INSERT INTO mysql.user(Host, User, authentication_string, ssl_cipher, x509_issuer, x509_subject) VALUES ('localhost', 'test2', PASSWORD('test2'), '', '', ''); Query OK, 1 row affected, 1 warning (0.02 sec)
结果显示,新建用户成功。但是这时如果通过该账户登录 MySQL 服务器,不会登录成功,因为 test2 用户还没有生效。
可以使用 FLUSH 命令让用户生效,命令如下:
FLUSH PRIVILEGES;
使用以上命令可以让 MySQL 刷新系统权限相关表。执行 FLUSH 命令需要 RELOAD 权限。
注意:user 表中的 User 和 Host 字段区分大小写,创建用户时要指定正确的用户名称或主机名。
3. 使用GRANT语句新建用户
虽然 CREATE USER 和 INSERT INTO 语句都可以创建普通用户,但是这两种方式不便授予用户权限。于是 MySQL 提供了 GRANT 语句。
使用 GRANT 语句创建用户的基本语法形式如下:
GRANT priv_type ON database.table TO user [IDENTIFIED BY [PASSWORD] 'password']
其中:
priv_type 参数表示新用户的权限;
database.table 参数表示新用户的权限范围,即只能在指定的数据库和表上使用自己的权限;
user 参数指定新用户的账号,由用户名和主机名构成;
IDENTIFIED BY 关键字用来设置密码;
password 参数表示新用户的密码。
例 4
下面使用 GRANT 语句创建名为 test3 的用户,主机名为 localhost,密码为 test3。该用户对所有数据库的所有表都有 SELECT 权限。SQL 语句和执行过程如下:
mysql> GRANT SELECT ON*.* TO 'test3'@localhost IDENTIFIED BY 'test3'; Query OK, 0 rows affected, 1 warning (0.01 sec)
其中,“*.*” 表示所有数据库下的所有表。结果显示创建用户成功,且 test3 用户对所有表都有查询(SELECT)权限。
技巧:GRANT 语句是 MySQL 中一个非常重要的语句,它可以用来创建用户、修改用户密码和设置用户权限。教程后面会详细介绍如何使用 GRANT 语句修改密码、更改权限。
以上がmysqlのユーザー名とパスワードを追加するステートメントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。