MariaDB數據庫用戶和權限管理

                                MariaDB數據庫用戶和權限管理

----------------------------------------------------------------------------------------------------------------------------------------

1、元數據數據庫:mysql

    系統授權表:轉到mysql數據庫下,show tables;語句查看

    db,host,user

    columns_priv, tables_priv, procs_priv, proxies_priv

2、用戶管理

    (1)創建用戶

    CREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password'];

    默認權限:USAGE

    格式:'USERNAME'@'HOST',其中HOST有:

    主機名、IP地址或者Network、通配符方式:%,172.16.%.%

    創建用戶示例1.png

    (2)重命名

    RENAME USER 'old_user_name'@'HOST' TO 'new_user_name'@'HOST'

    (3)刪除用戶

    DROP USER 'USERNAME'@'HOST'2.png

(4)修改密碼

    進入數據庫,輸入SQL語句

    <1>mysql> SET PASSWORD FOR 'user'@'HOST' = PASSWORD('password')3.png

    <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-networking4.png

    <2>開啓mysql服務,使用UPDATE命令修改管理員密碼

    UPDATE mysql.user as mu SET password=PASSWORD('rootpwd') WHERE mu.user='root';5.png

    <3>關閉mysqld進程,移除上述兩個選項,重啓mysqld6.png

3、MySQL權限管理

    權限類別:管理類、程序類、數據庫級別、表級別、字段級別

4、授權和回收權限

(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 ;7.png

(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[()];8.png

    注意:MariaDB服務進程啓動時會讀取mysql庫中所有授權表至內存

(1) GRANT或REVOKE等執行權限操作會保存於系統表中,MariaDB的服務進程通常會自動重讀授權表,使之生效

(2) 對於不能夠或不能及時重讀授權表的命令,可手動讓MariaDB的服務進程重讀授權表:mysql> FLUSH PRIVILEGES;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章