ホームページ  >  記事  >  データベース  >  mysqlのユーザー名とパスワードを追加するステートメントは何ですか?

mysqlのユーザー名とパスワードを追加するステートメントは何ですか?

青灯夜游
青灯夜游オリジナル
2020-10-15 11:04:179257ブラウズ

mysql にユーザー名とパスワードを追加するためのステートメント: 1. CREATE USER ステートメント、通常のユーザーを作成し、対応するパスワードを設定できます; 2. INSERT ステートメント、新しい通常のユーザーを作成し、対応するパスワードを設定できます。パスワード; 3. GRANT ステートメントで新しいユーザーを作成し、対応するパスワードとユーザー権限を設定します。

mysqlのユーザー名とパスワードを追加するステートメントは何ですか?

(推奨チュートリアル: 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 ] &#39;password&#39; ] [ ,用户 [ IDENTIFIED BY [ PASSWORD ] &#39;password&#39; ]]

パラメータの説明は次のとおりです:

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 &#39;test1&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;test1&#39;;
Query OK, 1 rows affected (0.06 sec)

結果は、test1 ユーザーが正常に作成されたことを示しています。

実際のアプリケーションでは、クリア テキストでパスワードを指定することは避けるべきですが、PASSWORD キーワードを使用すると、パスワードのハッシュ値を使用してパスワードを設定できます。

例 2

MySQL では、password() 関数を使用してパスワードのハッシュ値を取得できます。test1 を表示するための SQL ステートメントと実行プロセスハッシュ値は次のとおりです。

mysql> SELECT password(&#39;test1&#39;);
+-------------------------------------------+
| password(&#39;test1&#39;)                         |
+-------------------------------------------+
| *06C0BF5B64ECE2F648B5F048A71903906BA08E5C |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)
“*06C0BF5B64ECE2F648B5F048A71903906BA08E5C”就是 test1 的哈希值。下面创建用户 test1,SQL 语句和执行过程如下:
mysql> CREATE USER &#39;test1&#39;@&#39;localhost&#39;IDENTIFIED BY PASSWORD &#39;*06C0BF5B64ECE2F648B5F048A71903906BA08E5C&#39;;
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 (&#39;hostname&#39;, &#39;username&#39;, PASSWORD(&#39;password&#39;), &#39;&#39;, &#39;&#39;, &#39;&#39;);

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 (&#39;localhost&#39;, &#39;test2&#39;, PASSWORD(&#39;test2&#39;), &#39;&#39;, &#39;&#39;, &#39;&#39;);
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] &#39;password&#39;]

其中:

  • priv_type 参数表示新用户的权限;

  • database.table 参数表示新用户的权限范围,即只能在指定的数据库和表上使用自己的权限;

  • user 参数指定新用户的账号,由用户名和主机名构成;

  • IDENTIFIED BY 关键字用来设置密码;

  • password 参数表示新用户的密码。

例 4

下面使用 GRANT 语句创建名为 test3 的用户,主机名为 localhost,密码为 test3。该用户对所有数据库的所有表都有 SELECT 权限。SQL 语句和执行过程如下:

mysql> GRANT SELECT ON*.* TO &#39;test3&#39;@localhost IDENTIFIED BY &#39;test3&#39;;
Query OK, 0 rows affected, 1 warning (0.01 sec)

其中,“*.*” 表示所有数据库下的所有表。结果显示创建用户成功,且 test3 用户对所有表都有查询(SELECT)权限。

技巧:GRANT 语句是 MySQL 中一个非常重要的语句,它可以用来创建用户、修改用户密码和设置用户权限。教程后面会详细介绍如何使用 GRANT 语句修改密码、更改权限。

以上がmysqlのユーザー名とパスワードを追加するステートメントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。