本篇文章給大家?guī)砹岁P(guān)于mysql的相關(guān)知識,主要介紹了MySQL中的用戶創(chuàng)建與權(quán)限管理,文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下。
推薦學(xué)習(xí):mysql視頻教程
一、用戶管理
在mysql
庫里有個user表
可以查看已經(jīng)創(chuàng)建的用戶
1.創(chuàng)建MySQL用戶
注意:MySQL中不能單純通過用戶名來說明用戶,必須要加上主機。如hhy@10.1.1.1
基本語法:
mysql> create user '用戶名'@'被允許連接的主機名稱或主機的IP地址' identified by '用戶密碼'; mysql> select user,host from mysql.user;
案例:創(chuàng)建一個MySQL賬號,用戶名:hhy,用戶密碼:123
mysql> create user 'hhy'@'localhost' identified by '123'; /*或*/ mysql> create user 'hhy'@'127.0.0.1' identified by '123';
案例:創(chuàng)建一個MySQL賬號(要求開通遠程連接),主機IP地址:192.1668.44.110,用戶名:test,用戶密碼:123
mysql> create user 'test'@'192.1668.44.110' identified by '123';
測試:在IP地址為192.168.44.110的主機上
# yum install mysql -y # mysql -h 192.168.44.110 -P 3306 -uharry -p Enter password:123
選項說明:192.168.44.110 :MySQL服務(wù)器端的IP地址
yum安裝mysql:代表安裝的是MySQL的客戶端
yum安裝mysql-server:代表安裝的是MySQL的服務(wù)器端
案例:創(chuàng)建一個MySQL賬號(要求開通遠程連接),主機IP的網(wǎng)段:10.1.1.0,用戶名:jack,用戶密碼:123
create user 'jack'@'192.168.44.%' identified by '123'
案例:創(chuàng)建一個MySQL賬號(要求開通遠程連接),要求面向所有主機開放,用戶名:root,用戶密碼:123
create user 'root'@'%' identified by '123';
2. 刪除MySQL用戶
基本用戶:
mysql> drop user '用戶名'@'主機名稱或主機的IP地址';
特別說明:
如果在刪除用戶時沒有指定主機的名稱或主機的IP地址,則默認刪除這個賬號的所有信息。
案例:刪除hhy這個賬號
drop user 'hhy'@'localhost';
案例:刪除jack這個賬號
drop user 'jack'@'192.168.44.%';
案例:創(chuàng)建兩個harry賬號(localhost/10.1.1.23),然后刪除其中的某個
mysql> create user 'harry'@'localhost' identified by '123'; mysql> create user 'harry'@'192.168.44.110' identified mysql> drop user 'harry'@'192.168.44.110';
刪除MySQL賬號的另外一種方式
mysql> delete from mysql.user where user='root' and host='%'; mysql> flush privileges;
3. 修改MySQL用戶
特別說明:MySQL用戶重命名通??梢愿膬刹糠?,一部分是用戶的名稱,一部分是被允許訪問的主機名稱或主機的IP地址。
基本語法:
mysql> rename user 舊用戶信息 to 新用戶信息;
案例:把用戶’root’@'%‘更改為’root’@‘10.1.1.%’
mysql> rename user 'root'@'%' to 'root'@'10.1.1.%';
案例:把’harry’@‘localhost’更名為’hhy’@‘localhost’
mysql> create user 'tom'@'localhost' identified by '123'; mysql> rename user 'tom'@'localhost' to 'hhy'@'localhost';
使用update語句更新用戶信息
mysql> update mysql.user set user='hhy',host='localhost' where user='tom' and host='localhost'; mysql> flush privileges;
二、權(quán)限管理
1. 權(quán)限說明
所有權(quán)限說明
USAGE 無權(quán)限,只有登錄數(shù)據(jù)庫,只可以使用test或test_*數(shù)據(jù)庫 ALL 所有權(quán)限 以下權(quán)限為指定權(quán)限 select/update/delete/super/replication slave/reload... with grant option 選項表示允許把自己的權(quán)限授予其它用戶或者從其他用戶收回自己的權(quán)限
默認情況下,分配權(quán)限時如果沒有指定with grant option,代表這個用戶不能下發(fā)權(quán)限給其他用戶,但是這個權(quán)限分配不能超過自身權(quán)限。
2. 權(quán)限保存位置(了解)
- mysql.user:所有mysql用戶的賬號和密碼,以及用戶對全庫全表權(quán)限(*.*)
- mysql.db :非mysql庫的授權(quán)都保存在此(db.*)
- mysql.table_priv :某庫某表的授權(quán)(db.table)
- mysql.columns_priv :某庫某表某列的授權(quán)(db.table.col1)
- mysql.procs_priv :某庫存儲過程的授權(quán)
3. 給用戶授權(quán)
創(chuàng)建數(shù)據(jù)庫表:
create database java; use java; create table tb_student( id mediumint not null auto_increment, name varchar(20), age tinyint unsigned default 0, gender enum('男','女'), address varchar(255), primary key(id) ) engine=innodb default charset=utf8; insert into tb_student values (null,'劉備',33,'男','湖北省武漢市'); insert into tb_student values (null,'貂蟬',18,'女','湖南省長沙市'); insert into tb_student values (null,'關(guān)羽',32,'男','湖北省荊州市'); insert into tb_student values (null,'大喬',20,'女','河南省漯河市'); insert into tb_student values (null,'趙云',25,'男','河北省石家莊市'); insert into tb_student values (null,'小喬',18,'女','湖北省荊州市');
基本語法:
mysql> grant 權(quán)限1,權(quán)限2 on 庫.表 to 用戶@主機 mysql> grant 權(quán)限(列1,列2,...) on 庫.表 to 用戶@主機
庫.表表示方法:*.*代表所有數(shù)據(jù)庫的所有數(shù)據(jù)表,db_itheima.*代表db_itheima數(shù)據(jù)庫中的所有數(shù)據(jù)表,db_itheima.tb_admin,代表db_itheima數(shù)據(jù)庫中的tb_admin表
案例:給thhy賬號分配java數(shù)據(jù)庫的查詢權(quán)限
mysql> grant select on java.* to 'hehanyu'@'192.168.44.%'; mysql> flush privileges;
案例:給hehanyu賬號分配java.tb_student數(shù)據(jù)表的權(quán)限(要求只能更改age字段)
mysql> grant update(age) on java.tb_student to 'hehanyu'@'192.168.44.%'; mysql> flush privileges;
案例:添加一個root@%賬號,然后分配所有權(quán)限
create user 'root'@'%' identified by '123'; grant all on *.* to 'root'@'%'; flush privileges;
4. 查詢用戶權(quán)限
查詢當前用戶權(quán)限:
mysql> show grants;
查詢其他用戶權(quán)限:
mysql> show grants for '用戶名稱'@'授權(quán)的主機名稱或IP地址';
5. with grant option選項
mysql> grant all on *.* to 'amy'@'10.1.1.%' identified by '123' with grant option; mysql> grant all on *.* to 'harry'@'10.1.1.%' identified by '123';
如以上命令所示:amy擁有下發(fā)權(quán)限的功能,而harry不具備下發(fā)權(quán)限的功能。
如果grant授權(quán)時沒有with grant option選項,則其無法為其他用戶授權(quán)。
6.revoke回收權(quán)限
基本語法:
revoke 權(quán)限 on 庫.表 from 用戶; 查看hehanyu用戶權(quán)限 mysql> show grants for 'hehanyu'@'192.168.44.%'; 撤消指定的權(quán)限 mysql> revoke update on java.tb_student from 'tom'@'192.168.44.%'; 撤消所有的權(quán)限 mysql> revoke select on java.* from 'tom'@'192.168.44.%';
推薦學(xué)習(xí):mysql視頻教程