如何添加一個mysql用戶并給予權(quán)限詳解
一、新建一個用戶
老板:給我新建一個用戶joytom,密碼設(shè)置為123321,并任意遠程主機都能訪問,五分鐘完成,實現(xiàn)不了就給我提桶走人!
小王會心一笑,對創(chuàng)建用戶的命令早已滾瓜爛熟了,于是熟練的操作了起來:
1、創(chuàng)建用戶命令:
CREATE USER ‘username‘@'host' IDENTIFIED BY ‘password';
2、創(chuàng)建用戶
mysql> create user 'hh'@'%' identified by '123456'; Query OK, 0 rows affected (0.01 sec)
查看一下是否創(chuàng)建成功:
mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | caona | % | | hh | % | | root | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 6 rows in set (0.00 sec)
二、為用戶授權(quán)
創(chuàng)建完用戶后……
老板:好,比以前有進步了,那你再給joytom這個用戶設(shè)置一個權(quán)限,只允許查詢和修改copytest數(shù)據(jù)庫中的student表。
小王信手拈來,又熟練的操作了一波:
1、給用戶授權(quán)命令
grant privileges on database.tablename to “username”@'host';
privileges:用戶的操作權(quán)限,如 SELECT,INSERT,UPDATE 等,如果要授予所的權(quán)限則使用 ALL。
2、給 hh 用戶授可查、改的權(quán)限。
mysql> grant select,update on mysql.user to 'hh'@'%'; Query OK, 0 rows affected (0.02 sec)
3、在給 hh用戶增加一個查看視圖的權(quán)限,并刷新
mysql> grant SHOW VIEW on mysql.user to 'hh'@'%'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
三、撤銷用戶權(quán)限
老板:咳咳,很好,現(xiàn)在 joytom 不是有三個權(quán)限了么(查詢,修改,查詢視圖),那你把查詢視圖的權(quán)限給去掉,只留查詢和修改。
小王心中暗喜,這我都學了,很基礎(chǔ)的啊……
1、撤銷用戶權(quán)限命令
revoke privileges ON database.tablename FROM ‘username‘@'host';
撤銷(revoke)的和授予(grant)的基本一樣,除了 revoke(對應(yīng) grant)和 from(對應(yīng) to)
2、撤銷 joytom 用戶的查看視圖的權(quán)限
mysql> revoke SHOW VIEW on mysql.user from 'hh'@'%'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
再次查看:
mysql> show grants for 'hh'@'%'; +----------------------------------------------------+ | Grants for hh@% | +----------------------------------------------------+ | GRANT USAGE ON *.* TO `hh`@`%` | | GRANT SELECT, UPDATE ON `mysql`.`user` TO `hh`@`%` | +----------------------------------------------------+ 2 rows in set (0.00 sec)
發(fā)現(xiàn)已經(jīng)沒了查看視圖的權(quán)限。
grant, revoke 用戶權(quán)限后,該用戶只有重新連接 MySQL 數(shù)據(jù)庫,權(quán)限才能生效。
四、刪除一個用戶
老板:把 joytom 這個用戶刪掉讓我看看。
小王:好嘞,40 秒完事。
1、刪除用戶命令
drop user username@host
2、刪除用戶
先查看一下現(xiàn)在的所有用戶:
mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | caona | % | | hh | % | | root | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 6 rows in set (0.00 sec)
刪除 hh:
mysql> drop user hh@'%'; Query OK, 0 rows affected (0.01 sec)
再次查看,發(fā)現(xiàn)已經(jīng)沒了 joytom 這個用戶:
mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | caona | % | | root | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 5 rows in set (0.00 sec)
五、修改用戶的密碼
老板:把 joytom 這個用戶密碼修改一下。
小王:好嘞老板。
mysql5.*版本使用如下語句:
要想為匿名賬戶指定密碼,可以使用SET PASSWORD或UPDATE。在兩種情況中,一定要使用PASSWORD()函數(shù)為密碼加密
在Windows/Unix中使用PASSWORD的方法:
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');為匿名賬戶指定密碼的另一種方法是使用UPDATE直接修改用戶表。
在Windows和Unix中的過程是相同的。
下面的UPDATE語句同時為兩個匿名賬戶指定密碼:
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd') WHERE User = ''; mysql> FLUSH PRIVILEGES;mysql8.*版本使用如下語句:
1、 修改用戶登錄密碼
?ALTER USER 'caona'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '123456';
六、密碼過期和鎖定用戶
老板大喜:非常好非常好,加薪 2k,繼續(xù)努力,另外給其它同事講一下密碼過期和鎖定用戶的問題。
感謝老板,我會繼續(xù)努力,我這就去整理一下課件。
1、關(guān)于密碼過期
在 MySQL5.6.6 版本起,增加了 password_expired 功能,它允許設(shè)置 MySQL 數(shù)據(jù)庫用戶的密碼過期時間。這個特性已經(jīng)添加到 mysql.user 數(shù)據(jù)表,它的默認值是”N”,表示已禁用密碼過期功能
強制設(shè)置為密碼過期:
強制設(shè)置密碼過期后,雖然能夠登陸,但是一切權(quán)限都為空了。
2、關(guān)于 mysql5.7 鎖定用戶
在創(chuàng)建的時候鎖定用戶:
已存在的時候鎖定用戶:
解鎖賬號:
七、權(quán)限常用關(guān)鍵字
老板:現(xiàn)在你對 mysql 的權(quán)限管理掌握的還算可以了,咳咳,今天下班前給我整理一個權(quán)限常用關(guān)鍵字,整理不好就加會班吧。
小王想,幸虧這個我在學的時候就已經(jīng)整理過啊,看樣今天不用加班了!
權(quán)限 | 意義 |
ALL [PRIVILEGES] | 設(shè)置除GRANT OPTION之外的所有簡單權(quán)限 |
ALTER | 允許使用ALTER TABLE |
ALTER ROUTINE | 更改或取消已存儲的子程序 |
CREATE | 允許使用CREATE TABLE |
CREATE ROUTINE | 創(chuàng)建已存儲的子程序 |
CREATE TEMPORARY TABLES | 允許使用CREATE TEMPORARY TABLE |
CREATE USER | 允許使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。 |
CREATE VIEW | 允許使用CREATE VIEW |
DELETE | 允許使用DELETE |
DROP | 允許使用DROP TABLE |
EXECUTE | 允許用戶運行已存儲的子程序 |
FILE | 允許使用SELECT...INTO OUTFILE和LOAD DATA INFILE |
INDEX | 允許使用CREATE INDEX和DROP INDEX |
INSERT | 允許使用INSERT |
LOCK TABLES | 允許對您擁有SELECT權(quán)限的表使用LOCK TABLES |
PROCESS | 允許使用SHOW FULL PROCESSLIST |
REFERENCES | 未被實施 |
RELOAD | 允許使用FLUSH |
REPLICATION CLIENT | 允許用戶詢問從屬服務(wù)器或主服務(wù)器的地址 |
REPLICATION SLAVE | 用于復制型從屬服務(wù)器(從主服務(wù)器中讀取二進制日志事件) |
SELECT | 允許使用SELECT |
SHOW DATABASES | SHOW DATABASES顯示所有數(shù)據(jù)庫 |
SHOW VIEW | 允許使用SHOW CREATE VIEW |
SHUTDOWN | 允許使用mysqladmin shutdown |
SUPER | 允許使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL語句,mysqladmin debug命令;允許您連接(一次),即使已達到max_connections。 |
UPDATE | 允許使用UPDATE |
USAGE | “無權(quán)限”的同義詞 |
GRANT OPTION | 允許授予權(quán)限 |
總結(jié)
到此這篇關(guān)于如何添加一個mysql用戶并給予權(quán)限的文章就介紹到這了,更多相關(guān)添加mysql用戶并給權(quán)限內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于一致性hash算法(consistent hashing)的使用詳解
本篇文章對一致性hash算法(consistent hashing)的使用進行了詳細的分析介紹。需要的朋友參考下2013-05-05干掉一堆mysql數(shù)據(jù)庫,僅需這樣一個shell腳本(推薦)
這篇文章主要介紹了干掉一堆mysql數(shù)據(jù)庫,僅需這樣一個shell腳本,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04Mysql清空表數(shù)據(jù)庫命令truncate和delete詳解
這篇文章主要介紹了Mysql數(shù)據(jù)庫清空表truncate和delete的相關(guān)知識,本文給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06一個案例徹底弄懂如何正確使用mysql inndb聯(lián)合索引
今天小編就為大家分享一篇關(guān)于一個案例徹底弄懂如何正確使用mysql inndb聯(lián)合索引,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02MySQL 不用存儲過程循環(huán)插入數(shù)據(jù)的方法
在MySQL中,使用INSERT INTO VALUES語句可以一次性插入多行數(shù)據(jù),提高插入效率,還可通過Python的pymysql庫生成和執(zhí)行插入語句,這不僅減少了操作時間,還提高了代碼的簡潔性和執(zhí)行效率2024-09-09