首頁 >資料庫 >mysql教程 >總結分享MySQL中的使用者建立與權限管理

總結分享MySQL中的使用者建立與權限管理

WBOY
WBOY轉載
2022-09-02 16:59:462107瀏覽

推薦學習:mysql影片教學

一、用戶管理

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中的使用者建立與權限管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除