10bet网址
MySQL 5.6リファレンスマニュアル
本手册下载

6.3.2 ユーザーアカウントの追加

MySQLアカウントは,次の2つの方法で作成できます。

  • アカウントを作成するためのステートメント (创建用户格兰特など)を使用する。これらのステートメントを発行すると,サーバーによって付与テーブルへの適切な変更が行われます。

  • 插入更新删除などのステートメントを使用して,MySQL付与テーブルを直接操作する。

アカウント作成のステートメントを使用する方が、付与テーブルを直接操作するよりも簡潔で、エラーの発生率も低いため、推奨される方法です。创建用户および格兰特については、セクション13.7.1”アカウント管理ステートメント”で説明されています。

アカウントを作成するためのもう1つのオプションは,GUIツールMySQL工作台を使用する方法です。またはMySQLアカウント管理の機能を提供する使用可能な複数のサードパーティープログラムのいずれかを使用します。数据库管理は、このようなプログラムの 1.つです。

次の例では、mysqlクライアントプログラムを使用して、新しいアカウントを設定する方法を示します。これらの例は、セクション2.10.2「最初の MySQL数据库アカウントのセキュリティー設定」で説明するデフォルトに従って,権限が設定されていることが前提となっています。つまり,変更を行うには,MySQLユーザーとして MySQL数据库サーバーに接続する必要があり、アカウントはmysqlデータベースに対する插入権限および重新加载管理権限を持っている必要があります。

該当する例で注記したように,特定の制約が有効になるようにサーバーのSQLモードが設定されている場合は,一部のステートメントに失敗します。特に,厳密モード(严格事务表严格\u所有\u表、および没有自动创建用户) では、サーバーが一部のステートメントを受け入れることが回避されます。このような場合のために、回避策を示します。SQL语句モードおよびそれによる付与テーブルの操作への影響についての詳細は、セクション5.1.7”サーバーSQLモード”およびセクション13.7.1.4 GRANT構文”を参照してください。

まず、mysqlプログラムを使用して,MySQLユーザーとしてサーバーに接続します。

mysql——user=root

アカウントにパスワードを割り当てた場合は,このmysqlコマンドと,このセクションで後述するコマンドの両方に,--密码または-第オプションを指定する必要もあります。

としてサーバーに接続したあとは,新しいアカウントを追加できます。次のステートメントは,格兰特を使用して4つの新しいアカウントを設定します。

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';mysql>授予所有权限。* TO 'monty'@'localhost' -> WITH GRANT OPTION;mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';mysql>授予所有权限。* TO 'monty'@'%' -> WITH GRANT OPTION;mysql> CREATE USER 'admin'@'localhost';mysql> GRANT RELOAD,PROCESS ON *. **“admin”@“localhost”;mysql> CREATE USER 'dummy'@'localhost';

これらのステートメントで作成されたアカウントには、次のプロパティーがあります。

  • アカウントのうち 2.つは、ユーザー名が蒙蒂,パスワードが一些通行证です。どちらのアカウントも,すべてを実行するための完全な権限を持っているスーパーユーザーアカウントです。'monty'@'localhost'アカウントは、ローカルホストから接続する際にのみ使用できます。“蒙蒂”@“%”アカウントでは、ホスト部分に'%'ワイルドカードが使用されているため,これを使用すれば任意のホストから接続できます。

    蒙蒂として任意の場所から接続できるようにするには、蒙蒂に両方のアカウントが必要です。本地服务器アカウントがない場合は,蒙蒂がローカルホストから接続する際に、mysql_install_dbで作成された本地服务器の匿名ユーザーアカウントが優先されます。その結果、蒙蒂は匿名ユーザーとして処理されます。その理由は,匿名ユーザーアカウントが“蒙蒂”@“%”アカウントよりも固有の主持人カラム値を持っているため、用户テーブルのソート順でより早く表示されるためです。(用户テーブルのソートについては、セクション6.2.4”アクセス制御,ステージ1:接続の検証”で説明されています。)

  • “admin”@“localhost”アカウントにはパスワードがありません。このアカウントは、管理がローカルホストから接続する際にのみ使用できます。これには,重新加载および过程の管理者権限が付与されます。これらの権限を持つ管理ユーザーは,mysqladmin重新加载mysqladmin刷新mysqladmin刷新-xxx号コマンド,およびmysqladmin processlistを実行できます。任意のデータベースにアクセスするための権限は付与されません。その他の格兰特ステートメントを発行すれば、あとでこのような権限を追加できることがあります。

  • 'dummy'@'localhost'アカウントにはパスワードがありません。このアカウントは、ローカルホストから接続する際にのみ使用できます。権限は付与されません。あとでアカウントに特定の権限を付与することを前提としています。

没有自动创建用户SQL语句モードが有効になっている場合は、パスワードなしでアカウントを作成するステートメントに失敗します。これに対処するには、空でないパスワードを指定する确认的句を使用します。

アカウントに対する権限をチェックするには、显示拨款を使用します。

mysql>显示'admin'@'localhost';+--------------------------------------------------------+|资助admin@localhost|+------------------------------------------------------------------+|将*.*上的进程重新加载到“admin”@“localhost”|+-----------------------------------------------------+

创建用户および格兰特の代わりとして,直接插入ステートメントを発行してから、冲洗的特权を使用して付与テーブルを再ロードするようにサーバーに指示することで、同じアカウントを作成できます。

shell>mysql--user=root mysql mysql>INSERT INTO user->VALUES('localhost','monty',PASSWORD('some\u pass'),->'Y','Y','Y','Y','Y','Y','Y','Y','Y');mysql>INSERT-INTO-user->VALUES('%'、'monty'、'PASSWORD'、'>'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'>'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'Y'、'、'>'、'、'、'、'、'、'、'、'、'0,0,0);mysql>INSERT INTO user SET Host='localhost',user='admin',->Reload_priv='Y',Process_priv='Y';mysql>INSERT INTO user(Host,user,Password)->值('localhost','dummy','');mysql>刷新权限;

插入を使用してアカウントを作成する場合は、冲洗的特权を使用して、付与テーブルを再ロードするようにサーバーに指示する必要があります。そうしなければ、サーバーを再起動するまで変更が認識されません。创建用户では,冲洗的特权が必要ありません。

插入密码()関数を使用する理由は,パスワードを暗号化するためです。创建用户ステートメントでは自動的にパスワードが暗号化されるため、密码()は必要ありません。

'是'値を指定すると,アカウントに対する権限が有効になります。MySQLのバージョンによっては,最初の2つの插入ステートメントに異なる数の'是'値を使用する必要がある場合もあります。管理アカウントに対する插入ステートメントでは、を使用することで,さらに読み取り可能になるように拡張された插入構文が採用されています。

笨蛋アカウントに対する插入ステートメントでは、用户テーブル行内の主持人用户、および密码カラムにのみ,値が割り当てられます。権限カラムは明示的に設定されないため,MySQLによってすべてのカラムに,デフォルト値の“N”が割り当てられます。これは、创建用户の動作と同等です。

厳密な SQL语句モードが有効になっている場合は、デフォルト値を持たないすべてのカラムに値を指定する必要があります。この場合、插入ステートメントは、明示的にssl_cipherx509_issuer、およびx509主题カラムに値を指定する必要があります。

スーパーユーザーアカウントを設定するために必要な操作は,すべての権限カラムが'是'に設定された用户テーブル行を挿入することだけです。用户テーブルの権限はグローバルであるため,その他の付与テーブルのいずれにもエントリは必要ありません。

次の例では3つのアカウントを作成し,それらに特定のデータベースへのアクセス権を付与します。それぞれのユーザー名は习俗で,パスワードは晦涩难懂的です。

创建用户および格兰特を使用してアカウントを作成するには,次のステートメントを使用します。

CREATE user 'custom'@'localhost' IDENTIFIED BY 'obscure'; / /创建用户GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON account。* -> TO 'custom'@'localhost';mysql> CREATE USER 'custom'@'host47.example.com' IDENTIFIED BY 'obscure';GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON expense。* -> TO 'custom'@'host47.example.com';CREATE USER 'custom'@'server. mysql>由'obscure'标识的领域;GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON customer。* -> TO 'custom'@'server.domain';

3つのアカウントは,次のように使用できます。

  • 1.番目のアカウントは、银行帐户データベースにアクセスできますが,ローカルホストからに限定されます。

  • 2番目のアカウントは,费用データベースにアクセスできますが、host47.example.comホストからに限定されます。

  • 3.番目のアカウントは、顾客データベースにアクセスできますが、服务器.domainホストからに限定されます。

格兰特を使用せずに习俗アカウントを設定するには、次のように插入ステートメントを使用して、付与テーブルを直接変更します。

INSERT INTO user (Host, user,Password) -> VALUES('localhost','自定义',Password ('obscure'));mysql> INSERT INTO user (Host, user,Password) -> VALUES('host47.example.com','custom', Password ('obscure'));mysql> INSERT INTO user (Host, user,Password) -> VALUES('server.domain','custom', Password ('obscure'));mysql> INSERT INTO db -> (Host, db,User,Select_priv,Insert_priv, -> Update_priv,Delete_priv,Create_priv,Drop_priv) -> VALUES('localhost','bankaccount','custom', -> 'Y','Y','Y','Y','Y');mysql> INSERT INTO db -> (Host, db,User,Select_priv,Insert_priv, -> Update_priv,Delete_priv,Create_priv,Drop_priv) -> VALUES('host47.example.com','expenses','custom', -> 'Y','Y','Y','Y','Y');mysql> INSERT INTO db -> (Host, db,User,Select_priv,Insert_priv, -> Update_priv,Delete_priv,Create_priv,Drop_priv) -> VALUES('server. conf ', ' mysql . conf ')域”、“客户”,“自定义”- >“Y”、“Y”、“Y”、“Y”、“Y”、“Y”);mysql >冲洗特权;

最初の 3.つの插入ステートメントは、付与されたパスワードを使用してさまざまなホストから接続することをユーザー习俗に許可する用户テーブルエントリを追加しますが,グローバルな権限は付与しません(すべての権限はデフォルト値の“N”に設定されます)。次の 3.つの插入ステートメントは、银行帐户费用、および顾客データベースに対する権限を习俗に付与するが、適切なホストからのアクセス時に限定されるdbテーブルエントリを追加します。通常どおりに付与テーブルを直接変更する場合は、権限の変更が有効になるように、冲洗的特权を使用して再ロードするようにサーバーに指示する必要があります。

特定のドメイン (mydomain.comなど) 内のすべてのマシンからのアクセス権を持つユーザーを作成する際には、アカウント名のホスト部分にワイルドカード文字を使用できます。

mysql>创建用户“myname”@“%.mydomain.com”,由“mypass”标识;

付与テーブルを直接変更することで同じ処理を行うには、次のように実行します。

mysql>插入用户(主机、用户、密码…)->值('%.mydomain.com','myname',Password('mypass'),…);mysql>刷新权限;