読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

MySQLでのユーザの追加と権限付与

MySQLでのユーザの追加と、ユーザの権限の付与について。MySQL5.0以上を想定しています。 ◆ログイン 初期設定で ユーザ:root パスワード:admin とします。 $ mysql -u root -p Enter password:admin ◆ユーザの追加 ユーザ追加の書式は以下です。 mysql> CREATE USER 'username'@'hostname' IDENTIFIED BY 'password'; usernameとpasswordは任意です。hostnameについてはホスト名、IP、localhostワイルドカード「%」が使えます。「%」では任意のマシンからアクセスできます。 例えば username:testuser hostname:どのマシンからもアクセス可能に password:yyyy となると mysql> CREATE USER 'testuser'@'%' IDENTIFIED BY 'yyyy'; という書き方になります。 確認は mysql> SELECT user, host FROM mysql.user; ◆権限の付与 mysql> GRANT [権限] on [DB名].[TABLE名] to [ユーザ名]@[ホスト名]; で作成します。 ただし root のように全てにアクセスできるユーザー権限にしたい場合は with grant option が必要です。 mysql> GRANT ALL ON *.* TO username@hostname WITH GRANT OPTION; と書きます。付与したら mysql> FLUSH PRIVILEGES; でユーザテーブルをリフレッシュします。 確認は mysql> SHOW GRANTS FOR username@hostname; 権限の削除は mysql> REVOKE ALL on [DB名].[TABLE名] from [ユーザ名]@[ホスト名]; に則って書きます。 ◆パスワードの変更 mysql> SET PASSWORD FOR username@'hostname'=password('変更後のパスワード'); と書きます。変更したら mysql> FLUSH PRIVILEGES; をしてサーバに権限テーブルを再読み込みさせます。 ◆rootのパスワードを忘れてしまった場合 今のmysqld を停止 $ sudo service mysql stop GRANTテーブルを読み込まずmysqld起動します $ sudo mysqld_safe --skip-grant-tables 別ターミナルで mysql にログイン。これはパスワードなしです。 $ mysql -u root パスワードを変更します。 mysql> UPDATE mysql.user SET PASSWORD=PASSWORD("新パスワード") WHERE user="root"; 変更したら先ほどの mysqld_safe を停止し、MySQLを起動します。 $ sudo service mysql start 以降、変更したパスワードでログインできるようになります。 ◆ユーザの削除 mysql> DROP USER username@hostname; もしくはユーザの管理はMySQLデータベースの「user」テーブルで管理を行っているので、 そのテーブルからレコードを消すことでユーザを削除できます。 root ユーザでログインし、以下のように入力します。 mysql> DELETE FROM mysql.user WHERE user='ユーザ名'; ◆匿名ユーザの削除 mysql> DELETE FROM mysql.user WHERE user=''; mysql> FLUSH PRIVILEGES; ◆権限一覧 ALL  …すべての権限を設定出来るユーザを追加 ALTER  …ALTER TABLE(テーブル変更)の使用を許可 CREATE  …CREATE TABLE(テーブル作成) の使用を許可 CREATE TEMPORARY TABLES  …CREATE TEMPORARY TABLE(一時テーブルの作成) の使用を許可 DROP  …DROP TABLE(テーブルの削除) の使用を許可 INDEX  …CREATE INDEX(インデックス作成) および DROP INDEX(インデックス削除) の使用を許可 SELECT  …テーブルの参照権限 INSERT  …テーブルのレコード挿入権限 UPDATE  …テーブルのレコード更新権限 DELETE  …テーブルのレコード削除権限 LOCK TABLES  …SELECT 権限を持つテーブルで LOCK TABLES(テーブルのロック) の使用を許可 PROCESS  …SHOW FULL PROCESSLIST の使用を許可 REPLICATION CLIENT  …スレーブおよびマスタのサーバーを知る権利を付与 REPLICATION SLAVE  …レプリケーションのスレーブに必要(マスタからバイナリログを読み取るため) SHOW DATABASES  …SHOW DATABASES によりすべてのデータベースが表示される SHUTDOWN  …mysqladmin shutdown の使用を許可 ソース: ユーザーの作成 MySQLコマンド一覧(逆引きリファレンス) MySQL ユーザの操作(作成、パスワード変更、削除) MySQLユーザの追加