Tips

MySQL コマンド その2 【初級編 第7回】

MySQL コマンド その2 【初級編 第7回】

MySQLのコマンド

ユーザ関係の作成コマンド

ユーザの作成(権限はほとんどないユーザが作成される。またパスワードは設定されない)
mysql> create user watanabe;

ユーザの作成(権限はほとんどないユーザが作成される)
mysql> create user watanabe identified by ‘pass’;

ただし上記で作成したユーザでログインしようと試みても接続できない場合がある
mysql> select user,host,password from mysql.user;
+———-+———————–+——————————————-+
| user | host | password |
+———-+———————–+——————————————-+
| root | localhost | *0ABF8323095610447BB830AC98FE2C788ADB8B84 |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| | localhost | |
| | localhost.localdomain | |
| root | 192.168.100.211 | |
| atsushi | % | |
| watanabe | % | *AC7C3A731D9DC20E6779DC6170AE20C371E3B87E |
| atsushi2 | % | *98E635C83C775BB509BC0D0C32CF5736A5D4387C |
+———-+———————–+——————————————-+
9 rows in set (0.00 sec)

mysql>
mysql>
mysql> create user testuser identified by ‘testpass’;
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql>
mysql> select user,host,password from mysql.user;
+———-+———————–+——————————————-+
| user | host | password |
+———-+———————–+——————————————-+
| root | localhost | *0ABF8323095610447BB830AC98FE2C788ADB8B84 |
| root | localhost.localdomain | |
| root | 127.0.0.1 | |
| | localhost | |
| | localhost.localdomain | |
| root | 192.168.100.211 | |
| atsushi | % | |
| watanabe | % | *AC7C3A731D9DC20E6779DC6170AE20C371E3B87E |
| atsushi2 | % | *98E635C83C775BB509BC0D0C32CF5736A5D4387C |
| testuser | % | *00E247AC5F9AF26AE0194B41E1E769DEE1429A29 |
+———-+———————–+——————————————-+
10 rows in set (0.00 sec)

mysql>
mysql>
mysql> q
Bye
[root@wordpress ~]#
[root@wordpress ~]#
[root@wordpress ~]# mysql -u testuser -p
Enter password:
ERROR 1045 (28000): Access denied for user ‘testuser’@’localhost’ (using password: YES)

このように接続を拒否された。
これはパスワードを正しく入力しても拒否されてしまう。
なぜかというと作成したユーザのホストが % (ローカルホスト以外のすべてのホストからログイン可能)になっているのが原因で、
作成したユーザでローカルホストの上のmysqlサーバにログインするためには下記のようにする必要がある。(192.168.100.211 はこのホストのIPアドレス)

[root@wordpress ~]# mysql -u testuser -p -h 192.168.100.211
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 60
Server version: 5.1.58 MySQL Community Server (GPL) by Utter Ramblings

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.

mysql>
mysql>

ログインできた。
このように mysqlではユーザ名とホスト名は 1対1 にマッピングされていて、ユーザ名が同じでもログイン可能なホスト名が異なるものは、別のユーザだと認識される
ちなみに上記で password の欄に何も記載が無いものは、パスワードを入力せずにログインする。(何か入力するとログインを拒否されるので注意する)

作成する際に下記のようにすればローカルホストから接続ができる
mysql> create user ‘watanabe’@’localhost’ identified by ‘watanabe’;

または下記のようにしてユーザの接続元ホストがローカルホストから可能なものを作成してやればよい。
mysql> grant all privileges on *.* to “atsushi”@”localhost” identified by “atsushi”;

下記のようにしてエントリを修正してみたが接続ができなかったのでだめらしい
mysql> update mysql.user set host=’localhost’ where user=’watanabe’;

新しくユーザを作成して権限も割り当てる
基本的な書式1
mysql> grant 権限レベル on 割り当てるDB名.割り当てるテーブル名 to ユーザ名;
基本的な書式2(identified by はパスワードを割り当てるということ)
mysql> grant 権限レベル on 割り当てるDB名.割り当てるテーブル名 to ‘ユーザ名’@’ホスト名’ identified by ‘パスワード’;
例)グローバルレベル(1つのDBに依存しない形)でcreate権限を割り当てる場合
mysql> grant create on *.* to ‘username’@’localhost’;
例)testDBとsampleDBのみに selectとupdateする権限を割り当てる場合
mysql> grant select,update on test.sample to ‘username’@’localhost’
例)すべての権限を与えて作成する場合
mysql> grant all privileges on *.* to ‘username’@’localhost’ identified by ‘pass’;
例)権限を与えずに作成する場合(後で権限を割り当てる場合など)
mysql> grant usage on *.* to username;
例)すべてのホストから接続できるようにしたい場合
mysql> grant all privileges on *.* to ‘username’@”%”;
例)同じセグメント内のホストから接続できるようにしたい場合
mysql> grant all privileges on *.* to ‘username’@”192.168.1.%”;

今回はここまでにしましょう。

SQLが学べる 関連連載リンク

データベースの基礎が学べるSQL基礎講座
SQL基礎 連載

練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集

Recent News

Recent Tips

Tag Search