MariaDB數據庫用戶和權限管理
mysql
----------------------------------------------------------------------------------------------------------------------------------------
sql
一、元數據數據庫:mysql數據庫
系統受權表:轉到mysql數據庫下,show tables;語句查看vim
db,host,useride
columns_priv, tables_priv, procs_priv, proxies_priv函數
二、用戶管理spa
(1)建立用戶命令行
CREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password'];3d
默認權限:USAGEblog
格式:'USERNAME'@'HOST',其中HOST有:
主機名、IP地址或者Network、通配符方式:%,172.16.%.%
建立用戶示例
(2)重命名
RENAME USER 'old_user_name'@'HOST' TO 'new_user_name'@'HOST'
(3)刪除用戶
DROP USER 'USERNAME'@'HOST'
(4)修改密碼
進入數據庫,輸入SQL語句
<1>mysql> SET PASSWORD FOR 'user'@'HOST' = PASSWORD('password')
<2>mysql> UPDATE mysql.user SET password=PASSWORD('password') WHERE 條件從句;
此方法須要結束後輸入flush privileges;進行刷新纔會生效
<3>LINUX命令行:mysqladmin -u USER -pOLDPASS password 'NEWPASSWORD'
(5)忘記管理員密碼的解決辦法
<1>中止mysql服務,vim /etc/mysqld,爲其使用以下選項:skip-grant-tables、skip-networking
<2>開啓mysql服務,使用UPDATE命令修改管理員密碼
UPDATE mysql.user as mu SET password=PASSWORD('rootpwd') WHERE mu.user='root';
<3>關閉mysqld進程,移除上述兩個選項,重啓mysqld
三、MySQL權限管理
權限類別:管理類、程序類、數據庫級別、表級別、字段級別
四、受權和回收權限
(1)受權SQL語句
GRANT pri_type on obj_type pri_level TO 'user'@'host' [IDENTIFIED BY 'password'] [WITH GRANT OPTION]
pri_type:ALL全部權限,或者select(col1)、insert(col1,col2)等權限
obj_type:表、函數或者存儲過程
pri_level:*全部庫、*.*全部庫的全部表、db_name.*某個數據庫的全部表、
db_name.routine_name指定某個數據庫的函數存儲過程或者觸發器
WITH GRANT OPTION:能夠將一樣的權限受權給其餘用戶
示例:GRANT SELECT (name), INSERT (name,age) ON mydb.mytbl TO 'someuser'@'somehost‘;
IDENTIFIED BY 'password'加劇加顏色是由於,咱們可使用這句話來建立用戶,並賦予權限,一條命令即可執行,不用兩條,例如:GRANT SELECT (user,host) ON
mysql.user TO 'test5'@'localhost' WITH GRANT OPTION ;
(2)取消受權
REVOKE pri_type on obj_type pri_level FROM 'user'@'host'
(3)查看指定用戶得到的受權
Help SHOW GRANTS
SHOW GRANTS FOR 'user'@'host';
SHOW GRANTS FOR CURRENT_USER[()];
注意:MariaDB服務進程啓動時會讀取mysql庫中全部受權表至內存
(1) GRANT或REVOKE等執行權限操做會保存於系統表中,MariaDB的服務進程一般會自動重讀受權表,使之生效
(2) 對於不可以或不能及時重讀受權表的命令,可手動讓MariaDB的服務進程重讀受權表:mysql> FLUSH PRIVILEGES;