增加一個用戶test1 密碼為abc,讓他可以在任何主機上登錄,并對所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權(quán)限。
目前創(chuàng)新互聯(lián)公司已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站改版維護、企業(yè)網(wǎng)站設(shè)計、清水河網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
首先用以root 用戶連入MySQL,然后鍵入以下命令:
mysqlgrant select,insert,update,
delete on *.* to test2@localhost identified by \"abc\";
grant命令:
創(chuàng)建一個可以從任何地方連接服務(wù)器的一個完全的超級用戶,但是必須使用一個口令something 做這個:
mysql grant all privileges on *.* to user@localhost identified
by ’something’ with GRANT OPTION;
創(chuàng)建新的用戶名和密碼
create
user
username
identified
by
password
給用戶分配權(quán)限
GRANT
privileges
ON
databasename.tablename
TO
'username'@'host'
grant
all
privileges
on
*.*
to
'username'@'localhost'
identified
by
'password'
刪除權(quán)限
REVOKE
ALL
PRIVILEGES
ON
*.*
FROM
'username'@'localhost';
分配指定庫的權(quán)限
GRANT
ALL
PRIVILEGES
ON
database1.*
TO
'username'@'localhost'
IDENTIFIED
BY
'password';
分配指定操作的權(quán)限
GRANT
SELECT,
UPDATE
ON
database1.*
TO
'username'@'localhost'
IDENTIFIED
BY
'password';
刷新權(quán)限
FLUSH
PRIVILEGES
刪除用戶
DROP
USER
username@localhost;
設(shè)置默認的編碼
修改/etc/my.cnf配置文件,在[mysqld]下添加編碼配置,如下所示
character_set_server=utf8
init_connect='SET
NAMES
utf8'
重啟mysql
systemctl
restart
mysqld
更新用戶的密碼
SET
PASSWORD
FOR
'username'@'localhost'
=
PASSWORD("123456");
背景
在了解動態(tài)權(quán)限之前,我們先回顧下 MySQL 的權(quán)限列表。
權(quán)限列表大體分為服務(wù)級別和表級別,列級別以及大而廣的角色(也是MySQL 8.0 新增)存儲程序等權(quán)限。我們看到有一個特殊的 SUPER 權(quán)限,可以做好多個操作。比如 SET 變量,在從機重新指定相關(guān)主機信息以及清理二進制日志等。那這里可以看到,SUPER 有點太過強大,導致了僅僅想實現(xiàn)子權(quán)限變得十分困難,比如用戶只能 SET 變量,其他的都不想要。那么 MySQL 8.0 之前沒法實現(xiàn),權(quán)限的細分不夠明確,容易讓非法用戶鉆空子。
那么 MySQL 8.0 把權(quán)限細分為靜態(tài)權(quán)限和動態(tài)權(quán)限,下面我畫了兩張詳細的區(qū)分圖,圖 1 為靜態(tài)權(quán)限,圖 2 為動態(tài)權(quán)限。
圖 1- MySQL 靜態(tài)權(quán)限的權(quán)限管理圖
圖 2-動態(tài)權(quán)限圖
那我們看到其實動態(tài)權(quán)限就是對 SUPER 權(quán)限的細分。 SUPER 權(quán)限在未來將會被廢棄掉。
我們來看個簡單的例子,
比如, 用戶 'ytt2@localhost', 有 SUPER 權(quán)限。
mysql show grants for ytt2@'localhost';+---------------------------------------------------------------------------------+| Grants for ytt2@localhost ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |+---------------------------------------------------------------------------------+| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER, SUPER ON *.* TO ytt2@localhost |+---------------------------------------------------------------------------------+1 row in set (0.00 sec)
但是現(xiàn)在我只想這個用戶有 SUPER 的子集,設(shè)置變量的權(quán)限。那么單獨給這個用戶賦予兩個能設(shè)置系統(tǒng)變量的動態(tài)權(quán)限,完了把 SUPER 給拿掉。
mysql grant session_variables_admin,system_variables_admin on *.* to ytt2@'localhost';Query OK, 0 rows affected (0.03 sec)mysql revoke super on *.* from ytt2@'localhost';Query OK, 0 rows affected, 1 warning (0.02 sec)
我們看到這個 WARNINGS 提示 SUPER 已經(jīng)廢棄了。
mysql show warnings;
+---------+------+----------------------------------------------+
| Level ? | Code | Message ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
+---------+------+----------------------------------------------+
| Warning | 1287 | The SUPER privilege identifier is deprecated |
+---------+------+----------------------------------------------+
1 row in set (0.00 sec)`
mysql show grants for ytt2@'localhost';
+-----------------------------------------------------------------------------------+
| Grants for ytt2@localhost ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+-----------------------------------------------------------------------------------+
| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER ON *.* TO ytt2@localhost ? ? ? ? ?|
| GRANT SESSION_VARIABLES_ADMIN,SYSTEM_VARIABLES_ADMIN ON *.* TO ytt2@localhost |
+-----------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
當然圖 2 上還有其它的動態(tài)權(quán)限,這里就不做特別說明了。
可以用phpMyAdmin通過輸入語句的方法建立用戶,或者一般的圖形界面的SQL管理程序也可以建立和編輯用戶.
這里只說使用GRANT語句的方法,當然還有直接修改MySQL表的方法,不過很麻煩,用的人不多~
前提是有MySQL root權(quán)限
例子:建立另一個超級用戶(所有權(quán)限)的方法
GRANT ALL ON *.* TO username@localhost IDENTIFIED BY 'password' WITH GRANT OPTION
localhost是主機名,也可以是IP,用于限定這個用戶是否可以遠程連接.還可以用通配符"%",比如%.im286.com,或者202.97.224.%
*.* 中第一個星星是數(shù)據(jù)庫名(*為所有數(shù)據(jù)庫),第二個星星是表名(*為前面數(shù)據(jù)庫下的所有表)
ALL 是指全部語句的操作權(quán)限(經(jīng)??吹教摂M主機等的用戶沒有DROP權(quán)限,就是這里做了手腳)
語法大概就是這樣吧.
用ROOT賬戶登陸(有權(quán)限對整個數(shù)據(jù)庫操作的賬戶)點權(quán)限設(shè)置,然后添加一用戶 。在Database for user 那里選擇Create database with same name and grant all privileges 如果只是想指定它對其中一數(shù)據(jù)庫有管理權(quán)限就不要選擇全局權(quán)限中的任何一項 ,點執(zhí)行 完成創(chuàng)建 ,下面就是新建一數(shù)據(jù)庫,在點權(quán)限設(shè)置 ,在“按數(shù)據(jù)庫指定權(quán)限”那里把你剛新建的數(shù)據(jù)庫選擇上,點執(zhí)行就可以了!這樣你新建的賬戶只對該數(shù)據(jù)庫有完全控制的權(quán)限,對其他用戶也沒訪問權(quán)限!
用戶管理
mysqluse mysql;
查看
mysql select host,user,password from user ;
創(chuàng)建
mysql create user zx_root IDENTIFIED by 'xxxxx'; //identified by 會將純文本密碼加密作為散列值存儲
修改
mysqlrename user feng to newuser;//mysql 5之后可以使用,之前需要使用update 更新user表
刪除
mysqldrop user newuser; //mysql5之前刪除用戶時必須先使用revoke 刪除用戶權(quán)限,然后刪除用戶,mysql5之后drop 命令可以刪除用戶的同時刪除用戶的相關(guān)權(quán)限
更改密碼
mysql set password for zx_root =password('xxxxxx');
mysql update mysql.user set password=password('xxxx') where user='otheruser'
查看用戶權(quán)限
mysql show grants for zx_root;
賦予權(quán)限
mysql grant select on dmc_db.* to zx_root;
回收權(quán)限
mysql revoke select on dmc_db.* from zx_root; //如果權(quán)限不存在會報錯
名稱欄目:mysql怎么添加權(quán)限,mysql添加用戶權(quán)限
分享鏈接:http://aaarwkj.com/article0/hsogoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、網(wǎng)站收錄、網(wǎng)站改版、網(wǎng)頁設(shè)計公司、品牌網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)