首頁 > 軟體

MySQL中的使用者建立與許可權管理

2022-09-02 18:03:51

一、使用者管理

mysql庫裡有個user表可以檢視已經建立的使用者

1.建立MySQL使用者

注意:MySQL中不能單純通過使用者名稱來說明使用者,必須要加上主機。如hhy@10.1.1.1

基本語法:

mysql> create user '使用者名稱'@'被允許連線的主機名稱或主機的IP地址' identified by '使用者密碼';
mysql> select user,host from mysql.user;

案例:建立一個MySQL賬號,使用者名稱:hhy,使用者密碼:123

mysql> create user 'hhy'@'localhost' identified by '123';
/*或*/
mysql> create user 'hhy'@'127.0.0.1' identified by '123';

案例:建立一個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伺服器端的IP地址

yum安裝mysql:代表安裝的是MySQL的使用者端
yum安裝mysql-server:代表安裝的是MySQL的伺服器端

案例:建立一個MySQL賬號(要求開通遠端連線),主機IP的網段:10.1.1.0,使用者名稱:jack,使用者密碼:123

create user 'jack'@'192.168.44.%' identified by '123'

案例:建立一個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.%';

案例:建立兩個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;

二、許可權管理

1. 許可權說明

所有許可權說明

USAGE	無許可權,只有登入資料庫,只可以使用test或test_*資料庫
ALL		所有許可權
以下許可權為指定許可權
select/update/delete/super/replication slave/reload...
with grant option 選項表示允許把自己的許可權授予其它使用者或者從其他使用者收回自己的許可權

預設情況下,分配許可權時如果沒有指定with grant option,代表這個使用者不能下發許可權給其他使用者,但是這個許可權分配不能超過自身許可權。

2. 許可權儲存位置(瞭解)

  • mysql.user:所有mysql使用者的賬號和密碼,以及使用者對全庫全表許可權(*.*)
  • mysql.db :非mysql庫的授權都儲存在此(db.*)
  • mysql.table_priv :某庫某表的授權(db.table)
  • mysql.columns_priv :某庫某表某列的授權(db.table.col1)
  • mysql.procs_priv :某庫儲存過程的授權

3. 給使用者授權

建立資料庫表:

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,'關羽',32,'男','湖北省荊州市');
insert into tb_student values (null,'大喬',20,'女','河南省漯河市');
insert into tb_student values (null,'趙雲',25,'男','河北省石家莊市');
insert into tb_student values (null,'小喬',18,'女','湖北省荊州市');

基本語法:

mysql> grant 許可權1,許可權2 on 庫.表 to 使用者@主機
mysql> grant 許可權(列1,列2,...) on 庫.表 to 使用者@主機

庫.表表示方法:*.*代表所有資料庫的所有資料表,db_itheima.*代表db_itheima資料庫中的所有資料表,db_itheima.tb_admin,代表db_itheima資料庫中的tb_admin表

案例:給thhy賬號分配java資料庫的查詢許可權

mysql> grant select on java.* to 'hehanyu'@'192.168.44.%';

mysql> flush privileges;

案例:給hehanyu賬號分配java.tb_student資料表的許可權(要求只能更改age欄位)

mysql> grant update(age) on java.tb_student to 'hehanyu'@'192.168.44.%';

mysql> flush privileges;

案例:新增一個root@%賬號,然後分配所有許可權

create user 'root'@'%' identified by '123';
grant all on *.* to 'root'@'%';
flush privileges;

4. 查詢使用者許可權

查詢當前使用者許可權:

mysql> show grants;

查詢其他使用者許可權:

mysql> show grants for '使用者名稱稱'@'授權的主機名稱或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擁有下發許可權的功能,而harry不具備下發許可權的功能。

如果grant授權時沒有with grant option選項,則其無法為其他使用者授權。

6.revoke回收許可權

基本語法:

revoke 許可權 on 庫.表 from 使用者;
檢視hehanyu使用者許可權
mysql> show grants for 'hehanyu'@'192.168.44.%';
撤消指定的許可權
mysql> revoke update on java.tb_student from 'tom'@'192.168.44.%';
撤消所有的許可權
mysql> revoke select on java.* from 'tom'@'192.168.44.%';

到此這篇關於MySQL中的使用者建立與許可權管理的文章就介紹到這了,更多相關MySQL使用者建立內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com