MySQL的許可權控制(DCL)
DCL:Data Control Language
1、檢視當前使用者許可權
show grants;
2、建立使用者
create user 'user_name'@'host' identified by 'password';
3、檢視指定使用者的許可權
show grant for 'user_name'@'host';
4、授權
*.*:第一個*指資料庫,第二個*指資料庫中的表,按自己需求給不同使用者分配不同的許可權,*.*代表所有的庫以及所有庫的表
select:查詢許可權
insert:插入許可權
update:修改許可權
delete:刪除許可權
all privileges:所有的許可權
%:一般結合主機host來使用,用來模糊指定那些主機具備遠端登入的許可權,可根據自己需求進行指定。
(1)給指定使用者授權
grant select on database_name.* to 'user_name'@'host';
比如給使用者user賦予student庫中所有表的查詢許可權:
grant select on student.* to 'user'@'10.8.153.%';
注意:這裡的host使用的模糊匹配,意思是這個區域網內的所有主機都能訪問或者登入自己的MySQL。
(2)建立使用者並授權
grant insert on database_name.table_name to 'user_name'@'host' identified by 'password';
(3)重新整理許可權
flush privileges;
當權限不起作用的時候可以使用。
5、取消或者收回許可權
格式:revoke 許可權 on *.* from 'user_name'@'host';
(1)收回指定使用者的指定許可權
revoke select on databse_name.table_name from 'user_name'@'host';
(2)收回指定使用者的所有許可權
revoke all privileges on database_name.table_name from 'user_name'@'host';
舉個例子:
revoke all privileges on student.* from 'user'@'10.8.153.%';
6、刪除使用者
格式:drop user 'user_name'@'host';
比如刪除test使用者:
drop user 'test'@'10.8.153.%';
7、遠端連線MySQL
mysql -h host -u user_name -p
注意:Linux下要修改主機繫結,修改/etc/mysql/mysql.conf.d/mysqld.cnf配置檔案中的bind-address,如下: