mysql創(chuàng)建用戶以及給用戶授予權(quán)限實現(xiàn)方式
新建用戶
create user username identified by '123456';
說明:
username——你將創(chuàng)建的用戶名,password——該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸服務(wù)器.
進(jìn)入到mysql的客戶端,在下圖中可以看到,創(chuàng)建了一個用戶名為xaiodong并且密碼為123456的用戶

這個時候創(chuàng)建的改用戶只能看見一個庫, information_schema
重新開一個窗口,使用改用戶進(jìn)行測試,下圖中登錄到了新創(chuàng)建的用戶中。

使用show databases查看有哪些數(shù)據(jù)庫的時候,可以看到只有一個數(shù)據(jù)庫

對于information_schema數(shù)據(jù)庫,是mysql默認(rèn)自帶的數(shù)據(jù)庫,新創(chuàng)建的用戶xaiodong可以查看改數(shù)據(jù)庫的部分表,由于這是mysql自帶的數(shù)據(jù)庫,所以最好不用動它。
嘗試使用改用戶創(chuàng)建一個新的數(shù)據(jù)庫的時候發(fā)現(xiàn),沒有無法創(chuàng)建,只是因為沒有權(quán)限的問題,接下來,將會講如何給改用戶進(jìn)行授權(quán)。

新用戶授權(quán)
下面給用戶授權(quán)的命令
grant all privileges on dbname.tbname to 'username'@'login ip' identified by 'password' with grant option;
詳細(xì)說明:
- grant all privileges 授予改用戶對于數(shù)據(jù)庫的所有權(quán)限
- dbname =
*表示所有數(shù)據(jù)庫(也就是dbname為*的時候) - tbname =
*表示所有表 - login ip =
%表示任何 ip都是通過改用戶進(jìn)行登錄 - password 為空,表示不需要密碼即可登錄
- with grant option 表示該用戶還可以授權(quán)給其他用戶
測試,目前在數(shù)據(jù)庫中有一個數(shù)據(jù)庫名為test2的數(shù)據(jù)庫,在該數(shù)據(jù)庫中有一張名字為user的表,將在root用戶下,授予剛才新建的用戶對于該數(shù)據(jù)庫中該表的所有權(quán)限
grant all privileges on test2.user to 'xiaodong'@'%' identified by '123456' with grant option;

然后再新創(chuàng)建的用戶xiaodong所在窗口中,查看數(shù)據(jù)庫,可以看到剛才root用戶授予權(quán)限的數(shù)據(jù)庫test2

檢測一下是否可以對該數(shù)據(jù)庫進(jìn)行操作呢,嘗試往該數(shù)據(jù)庫中插入一條數(shù)據(jù)

查入數(shù)據(jù)成功,說明給該用戶的的授權(quán)成功
由于新用戶只對test2用戶的user表有所有的權(quán)限,所有目前該新用戶還沒有其它權(quán)限,比如使用該用戶創(chuàng)建新的數(shù)據(jù)庫。

給該新用戶授予所有的權(quán)限
使用root用戶登錄之后使用下面的命令對于新用戶授予該用戶所有的權(quán)限
GRANT ALL PRIVILEGES ON *.* TO 'xiaodong'@'%' Identified by "123456";
下圖為新用戶登錄之后的界面,這個時候可以發(fā)現(xiàn)xiaodong用戶目前有了創(chuàng)建用戶并且可以看到所有的數(shù)據(jù)庫等幾乎所有權(quán)限。

對于上面的操作中對于一個新的用戶授予所有的數(shù)據(jù)庫的所有權(quán)限是一個比較危險的操作,因此再對于一個新的用戶(特別是不是很信任的用戶),可以設(shè)置比較具體的權(quán)限。
下面將介紹如何授予比較具體的權(quán)限。
更具體的授權(quán)
可以將All替換成下面的10個比較細(xì)的權(quán)限,中間用逗哈進(jìn)行隔開
GRANT ALL PRIVILEGES ON *.* TO 'aaa'@'%' Identified by "123456" WITH GRANT OPTION;
privileges 包括:
alter:修改數(shù)據(jù)庫的表create:創(chuàng)建新的數(shù)據(jù)庫或表delete:刪除表數(shù)據(jù)drop:刪除數(shù)據(jù)庫/表index:創(chuàng)建/刪除索引insert:添加表數(shù)據(jù)select:查詢表數(shù)據(jù)update:更新表數(shù)據(jù)all:允許任何操作usage:只允許登錄
回收權(quán)限
命令詳解
revoke privileges on dbname[.tbname] from username;
如下面為收回用戶aaa的對于所有數(shù)據(jù)庫的所有權(quán)限
revoke all privileges on *.* from aaa;
修改用戶的密碼
use mysql select * from user
進(jìn)入 mysql 庫中
- 修改密碼
update user set password = password('qwe') where user = 'aaa';
- 刷新權(quán)限
flush privileges
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Mysql5.7自帶的壓力測試命令mysqlslap及使用語法
mysqlslap是一個診斷程序,旨在模擬MySQL服務(wù)器的客戶端負(fù)載并報告每個階段的時間。這篇文章主要介紹了Mysql5.7自帶的壓力測試命令mysqlslap的相關(guān)知識,需要的朋友可以參考下2019-10-10
關(guān)于在sql中使用order by實現(xiàn)排序出錯問題
這篇文章主要介紹了關(guān)于在sql中使用order by實現(xiàn)排序出錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
MySQL的Replace into 與Insert into on duplicate key update真正的不同
今天聽同事介紹oracle到mysql的數(shù)據(jù)migration,他用了Insert into ..... on duplicate key update ...,我當(dāng)時就想怎么不用Replace呢,于是回來就仔細(xì)查了下,它們果然還是有區(qū)別的2014-02-02
MySQL主從復(fù)制之半同步semi-sync?replication
這篇文章主要介紹了MySQL主從復(fù)制之半同步semi-sync?replication,半同步相對于異步復(fù)制而言,提高了數(shù)據(jù)的安全性,同時也造成了一定程度的延遲,這個延遲最少是一個TCP往返的時間。所以,半同步復(fù)制最好在低延時的網(wǎng)絡(luò)中使用,下文詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-02-02

