mysqlコマンドラインでのユーザー管理方法の共有

6268 ワード

mysqlをインストールすると、mysqlという名前のデータベースがあります.ユーザーを格納するテーブルはuserです.mysqlデータベースのユーザー管理はこのテーブルをめぐって展開されます.もちろん、tables_などのテーブルもあります.priv,procs_priv,clumns_priv,information_schemaデータベースのUSER_PRIVILEGESなど.
mysql管理ツールphpmyadminがあれば、グラフィックインタフェースでユーザーを管理できますが、phpmyadminのような管理ツールがなければどうしますか?この場合、mysqlのユーザーをコマンドラインでsql文を実行することで管理できます.
一、ユーザーの追加
1,create user
構文:
CREATE USER user_specification
[, user_specification] ...
user_specification:
user [IDENTIFIED BY [PASSWORD] 'password']
例:
 
  
mysql> create user '44'@'127.0.0.1'; // 44
Query OK, 0 rows affected (0.00 sec)

mysql> create user '33'@'localhost' identified by 'aaaa'; // 33 , aaaa
Query OK, 0 rows affected (0.00 sec)

mysql> select * from mysql.user where user='33' or user='44'\G; // mysql user

create userはユーザーを作成できますが、ユーザーを作成するだけで、ユーザーに構成権限を与えていないので、grantコマンドに取って代わられます.
2,grant
構文:
GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_specification [, user_specification] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH with_option ...]
object_type:
TABLE
| FUNCTION
| PROCEDURE
priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name
user_specification:
user [IDENTIFIED BY [PASSWORD] 'password']
ssl_option:
SSL
|X 509#要求x 509証明書
|CIPHER'cipher'#暗号化アルゴリズム
|ISSUER'issuer'#証明書発行元
|SUBJECT'subject'#テーマ
with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count#は1時間に最大何本のsqlを実行します
| MAX_UPDATES_PER_HOUR count#1時間あたりの最大更新数
| MAX_CONNECTIONS_PER_HOUR count#の1時間あたりの最大結合数はいくらですか
| MAX_USER_CONNECTIONS count#最大ユーザー結合数
上の文法に驚かないで、実は意味を理解すれば、簡単にマスターできます.私はこのように理解しています.
grant権限onアプリケーション範囲(データベーステーブル、メソッド等)toユーザ(@で区切って、前はユーザ名の後ろにホスト名「ユーザ名」@「ホスト名」)identified byパスワードrequireが何を要求するかwithユーザに対するsqlの実行本数制御.
個人的には、上のいくつかの赤いキーワードを覚えていれば、基本的にこの命令が身につくと思います.
Privilege
Meaning ALL [PRIVILEGES]
すべての権限ALTER alter table ALTER ROUTINE
alter routineCREATE
データベースとテーブルを作成できますCREATE ROUTINE
create routineを使用できますCREATE TEMPORARY TABLES
テンポラリ・テーブルの使用CREATE USER
ユーザーの追加、削除、名前変更、権限の取り消しCREATE VIEW
ビューを作成および変更できますDELETE DROP
データベース、テーブル、ビューなどを削除する可能性があります.EVENT
イベントハイトは使用可能EXECUTE
実行可能FILE
サーバでファイルを読み書きできますGRANT OPTION
ユーザーは、自分が追加した服のライセンスを持つ権利があります.INDEX
インデックスを作成、削除できますINSERT
挿入可能LOCK TABLES
テーブルをロックできますPROCESS
使用可能SHOW PROCESSLIST mysql sql REFERENCES
Not implemented RELOAD
リフレッシュ機能を使用できますREPLICATION CLIENT
ユーザーはプライマリ・スレーブ同期を実行できますREPLICATION SLAVE
プライマリスレーブ同期時、サーバからbinary logを読み出すことができますSELECT SHOW DATABASES
show databasesを使用してすべてのデータベースを表示できますSHOW VIEW show view SHUTDOWN
mysqladminのパラメータshutdownを使用できますSUPER
Enable use of other adminstrative operations such as CHANGE MASTER TO , KILL , PURGE BINARY LOGS , SET GLOBAL , and mysqladmin debug command TRIGGER
トリガを使用可能UPDATE
新しい操作を実行できますUSAGE
特権なし
例:
 
  
grant all ON test.* TO 'test'@'localhost'; //test test
grant select,update on test.user to 'test'@'localhost'; //test test user ,
//test 111111, user name , id,name
grant select(name),update(id,name) on test.user to 'test'@'localhost' identified by '111111';
//test , ssl
grant all privileges on *.* to 'test'@'%' identified by '123456' require ssl

ユーザーを追加した後、flush privilegesを忘れないでください.
二、ユーザーの削除
構文:
DROP USER user [, user] ...
例:
 
  
drop user 'test2'@'localhost'; // drop ,tables_priv,procs_priv

ここでなぜtest 2ではなく'test 2'@'localhost'をユーザー名として使うのか、mysqlのためです.userというテーブルは、ルートユーザー名とhost名でユーザーを決定します.テーブル構造を見てください.
show create table mysql.user\G;PRIMARY KEY(`Host`,`User`)というものがあります
三、ユーザーの修正
構文:
RENAME USER old_user TO new_user
[, old_user TO new_user] ...
例:
 
  
rename user 'test2'@'localhost' to 'test'@'%';

四、権限の修正
構文:
REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user] ...
REVOKE ALL PRIVILEGES, GRANT OPTION
FROM user [, user] ...
grantはユーザに権限を割り当て,revokeはユーザから権限を奪う.
例:
 
  
mysql> revoke update on *.* from 'tank'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> select mysql.user.update_priv from mysql.user where user='tank' and host='localhost';
+-------------+
| update_priv |
+-------------+

+-------------+
1 row in set (0.00 sec)

取り除くtank@localhostこのユーザーの更新機能は、権限を削除します.もし私がすべて削除したらどうしますか.一つ一つ書くのが面倒です.次の例を見てください.
 
  
mysql> revoke all privileges ,grant option from '33'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

使い果たす33@localhostこのユーザーのすべての権限
海の底のタカ