mysql用户 11_MySQL-快速入门(11)用户管理
1、權限表
存儲用戶權限信息表主要有:user、db、host、tables_priv、columns_priv、procs_priv。
1》user表:
記錄允許連接到服務器的賬號信息,里面的權限是全局級別的。user表有42個字段,這些字段可以分為4類,分別是用戶列、權限列、安全列、資源控制列。
2》db和host表
3》tables_priv和columns_priv表
4》procs_priv表
2、賬戶管理
1》登錄和登出MySQL
mysql [-h localhost] -uroot -p12345 -P端口號,默認3306 -e命令或SQL語句
2》新建普通用戶
1>create user或grant語句:
//create user ...
create user user_specification[,user_specification] ...
user_specification:
user@host
[
identified by [password]'password'
|identified with auth_plugin [as 'auth_string']
]
user:表示創建的用戶名稱
host:表示允許登錄的用戶主機名
identified by:表示用來設置用戶的密碼。與identitied with互斥。
[password]:表示使用hash值設置密碼'password':表示登錄時使用的普通明文密碼
identified with:為用戶指定一個身份驗證插件。與identified by互斥。
auth_plugin:插件的名稱
auth_string:該參數傳值給身份驗證插件,由該插件解析該參數的意義
舉例:create user 'lfy'@'localhost' identified by '12345';
或者
create user 'lfy'@'localhost';
//grant語句不僅可以創建用戶,還可以在創建用戶的同時授權
grant privileges on db.table
to user@host [identified by'password'] [,user [identified by 'password']]
[with grant option];
privileges:表示賦予用戶的權限類型
db.table:表示用戶的權限所作用的數據庫中的表
identified by:設置的密碼
[with grant option]:表示對新建立的用戶賦予grant權限,即該用戶可以對其他用戶賦予權限。
grant select,update on *.*to'lfy'@'localhost' identified by '12345';
user、host字段區分大小寫。查詢的時候需要指定正確的值。
2>直接操作MySQL授權表:
insert into MySQL.user(user,host,password,[privilegelist]) values(...)
3》刪除普通用戶,2種方式。
1>drop user語句
drop user user1 [,user2];
2>delete刪除用戶
delete from MySQL.user where host='hostname' and user='username';
4》root用戶修改自己的密碼
1>mysqladmin命令
mysqladmin -u username -h localhost -p password 'newpwd';
2>修改MySQL.user表
update MySQL.user set password=password("rootpwd") where user="root" and host="localhost";
執行完上面的語句修改密碼后,還需要執行:
mysql>FLUSH PRIVILEGES; //重新加載權限
3>使用set語句修改root用戶的密碼
//可以修改別的用戶的密碼,也可以修改自己的密碼
mysql>set password=password("rootpwd");
mysql>FLUSH PRIVILEGES;
5》root用戶修改普通用戶的密碼:set數據庫的MySQL.user表,或者grant語句
1>使用set語句修改普通用戶的密碼
set password for 'user'@'host' = password('somepassword');//普通用戶更改自己的密碼
set password=password('somepassword');
2>使用update語句修改普通用戶的密碼
update MySQL.user set password=password('pwd')
where user='username' and host='hostname';
PLUSH PRIVILEGES;
3>使用grant語句修改普通用戶密碼
grant urant on *.* to 'user'@'%' identified by 'somepassword';
//全局界別使用grant usage語句(*.*)指定某個賬戶的密碼而不影響賬戶當前的權限。
使用grant ... identified by語句或者MySQLadmin password命令設置密碼,它們俊輝加密密碼。這種情況下,
不需要使用password()函數
6》普通用戶修改密碼
set password = password('pwd');
7》root用戶密碼丟失
1>使用--skip-grant-tables選項啟動MySQL服務
使用使用--skip-grant-tables選項啟動MySQL服務,MySQL數據庫服務器將不加載權限判斷,任何用戶都能訪問數據庫。Windows操作系統中,可以使用MySQLLd或MySQLLd-nt來啟動MySQL服務進程。
mysqld --skip-grant-tables
或者
mysqld-nt --skip-grant-tables
2>使用root用戶登錄,重新設置密碼。
3、權限管理
1》MySQL的各種權限
2》授權
1>全局層級:全局權限適用于一個給定服務器中的所有數據庫。這些權限存儲在MySQL.user表中。grant all on *.*和revoke all on *.*只授予和撤銷全局權限。
2>數據庫層級
數據庫權限適用于一個給定數據庫中的所有目標。這些權限存儲在MySQL.db和MySQL.host表中。grant all on db_name.和revoke all on db_name.*只授予和撤銷數據庫權限。
3>表層級
表權限適用于一個給定表中的所有列。
4>列層級
列權限適用于一個給定表中的單一列。
5>子程序層級
3》收回權限
revoke ...
4》查看權限
mysql> show grants for 'mysql'@'localhost';+----------------------------------------------------------------------+
| Grants for mysql@localhost |
+----------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION |
+----------------------------------------------------------------------+
1 row in set (0.00sec)
mysql>
4、訪問控制
1》連接核實階段
通過Host、user、password幾個字段核實用戶的連接請求。不能通過,則拒絕訪問數據庫服務器。
2》請求核實階段
對于通過連接的會話,對于此鏈接上的每個請求,服務器檢查用戶要執行的操作,然后檢查是否有足夠的權限來執行它。
總結
以上是生活随笔為你收集整理的mysql用户 11_MySQL-快速入门(11)用户管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京环球影城安检要求
- 下一篇: DNF85版本短剑流剑魂时装属性怎么选择