您好,登錄后才能下訂單哦!
本文主要給大家介紹MySQL用戶及權限管理,文章內容都是筆者用心摘選和編輯的,具有一定的針對性,對大家的參考意義還是比較大的,下面跟筆者一起了解下MySQL用戶及權限管理吧。
MySQL用戶及權限管理
MySQL 默認管理員用戶為root,但是這個用戶權限太大,一般只在管理數據庫時候才用。為了MySQL的安全性,在實際應用中用戶權限要最小化,應該只分配使用到的權限。
MySQL云服務器通過MySQL權限表來控制用戶對數據庫的訪問,MySQL權限表存放在mysql數據庫里,由mysql_install_db腳本初始化。這些MySQL權限表分別user,db,table_priv,columns_priv和host。下面分別介紹一下這些表的結構和內容:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; CREATE USER 'pig'@'192.168.1.101' IDENDIFIED BY '123456'; CREATE USER 'pig'@'192.168.1.%' IDENTIFIED BY '123456'; CREATE USER 'pig'@'%' IDENTIFIED BY ''; CREATE USER 'pig'@'%';
設置密碼:password1
mysqladmin -uroot -password password1
由password1修改為password2
mysqladmin -uroot -p password1 password password2
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
SET PASSWORD = PASSWORD("newpassword");
SELECT USER();
DROP USER 'username'@'host';
查看mysql的所有用戶及權限、加密密碼、最后修改密碼時間;
select host,user,password from mysql.user;
SELECT user,host,authentication_string,password_last_changed FROM mysql.user;
DESCRIBE table1;
GRANT privileges (columns) ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION
子句 WITH GRANT OPTION表示該用戶可以為其他用戶分配權限。
GRANT all PRIVILEGES ON databasename.tablename TO 'username'@'host';
說明:
GRANT all PRIVILEGES ON databasename.tablename TO 'username'@'host' IDENTIFIED BY 'password';
說明:
例子:
GRANT ALL ON *.* TO 'pig'@'%'; GRANT ALL ON maindataplus.* TO 'pig'@'%'; GRANT SELECT,INSERT ON test.user TO 'pig'@'%';
GRANT PRIVILEGES ON databasename.tablename TO 'username'@'localhost' WITH GRANT OPTION;
說明:
grant 查詢、插入、更新、刪除MySQL 數據表結構權限。
grant select,insert,update,delete on databasename.tablename to 'username'@'host';
grant 創建,卸載MySQL 數據表的權限。
grant create,drop on databasename.tablename to 'username'@'host';
grant 作用在表中的列上:
grant select(id, se, rank) on databasename.tablename to 'username'@'host';
grant 操作 MySQL 外鍵權限。
grant references on databasename.tablename to 'username'@'host';
grant 操作 MySQL 臨時表權限。
grant create temporary tables on databasename.tablename to 'username'@'host';
grant 操作 MySQL 索引權限。
grant index on databasename.tablename to 'username'@'host';
grant 操作 MySQL 視圖、查看視圖源代碼 權限。
grant create view on databasename.tablename to 'username'@'host'; grant show view on databasename.tablename to 'username'@'host';
grant 操作 MySQL 存儲過程、函數 權限。
grant create routine on databasename.tablename to 'username'@'host'; grant alter routine on databasename.tablename to 'username'@'host'; grant execute on databasename.tablename to 'username'@'host'; grant execute on procedure testdb.pr_add to 'dba'@'localhost'; grant execute on function testdb.fn_add to 'dba'@'localhost';
grant 普通 DBA 管理某個 MySQL 數據庫的權限。
grant all privileges on databasename.* to dba@'localhost';
grant all on *.* to dba@'localhost'
修改完權限以后 一定要刷新服務,或者重啟服務:
FLUSH PRIVILEGES;
SHOW GRANTS [FOR 'username'@'host'];
默認查看自己的權限,加for查看指定用戶的權限;
如果此時發現剛剛給的權限太大了,如果我們只是想授予它在某個數據庫上的權限,那么需要切換到root 用戶撤銷剛才的權限,重新授權:
REVOKE ALL PRIVILEGES ON databasename.tablename FROM 'username'@'host';
說明:
注意:
假如你在給用戶'pig'@'%'授權的時候是這樣的(或類似的):GRANT SELECT ON test.user TO 'pig'@'%',則在使用REVOKE SELECT ON . FROM 'pig'@'%';命令并不能撤銷該用戶對test數據庫中user表的SELECT 操作。
相反,如果授權使用的是GRANT SELECT ON . TO 'pig'@'%';則REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤銷該用戶對test數據庫中user表的Select權限。
具體信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看。
推薦剛裝完mysqld服務時在shell運行mysql_secure_installation命令
mysql_secure_installation
看完以上關于MySQL用戶及權限管理,很多讀者朋友肯定多少有一定的了解,如需獲取更多的行業知識信息 ,可以持續關注我們的行業資訊欄目的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。