天天看點

菜鳥學Linux 第076篇筆記 mysql使用者管理

菜鳥學Linux 第076篇筆記 mysql使用者管理

包含内容

建立、删除、修改使用者

授權、撤消授權使用者

mysql使用者密碼忘記如何重置

User Management

使用者

密碼 password();加密機制MySQL獨有的

使用者名@主機

賬号:認證

權限

授權

MySQL将授權表加載到内容進行管理

使用者和權限表

user 使用者賬号、全局權限等

db 庫級别的權限

host 現已經廢棄

tables_priv 表級别權限

columns_priv 列級别權限

procs_priv 存儲過程和存儲函數相關的權限

proxies_priv 代理使用者權限

MySQL使用者賬号

使用者名16字元以内 

主機 

主機名 www.mysky.com mysql

IP 192.168.11.122

網絡位址 172.16.0.0/255.255.0.0

通配符 %任意字段任意個  _任意單個字元

192.168.%.%

%.mysky.com

--skip-name-resolve  跳過名稱解析

權限級别

全局級别 SUPER, 

庫級别

SELECT * FROM db\G;

表級别 DELETE ALTER TRIGGER

列級别 SELECT, INSERT, UPDATE

存儲過程和存儲函數

臨時表:記憶體表

heap: 16MB

觸發器: 主動資料庫

INSERT, DELETE, UPDATE

建立使用者

CREATE USER 'user_name'@'hostname' [INDENTIFIED BY 'password'];

INSERT INTO mysql.user

FLUSH PRIVILEGES;

删除使用者

DROP USER 'username'@'host';

修改使用者名

RENAME USER older_name TO new_name   (這個裡邊包含@主機哈)

GRANT

GRANT ALL PRIVILEGES [ object_type ] ON db.* TO username@'%' [WITH with_option..] ;

object_type:

    TABLE

  | FUNCTION

  | PROCEDURE

with_option:

    GRANT OPTION

  | MAX_QUERIES_PER_HOUR count

  | MAX_UPDATES_PER_HOUR count

  | MAX_CONNECTIONS_PER_HOUR count

  | MAX_USER_CONNECTIONS count

  count執行指令時要替換成數值

        GRANT CREATE ON cactidb.* TO cactiuser@'%';  (建立權限)

        GRANT INSERT ON cactidb.* TO cactiuser@'%';  (插入權限)

        GRANT UPDATE(Age) ON cactidb.testtb TO cactiuser@'%'; (授權修改到列級别)

        GRANT SUPER ON *.* TO cactiuser@'%';  

        (注意有些授權需要重建立立會話才可以使授權生效)

SHOW GRANTS FOR cactiuser@'%';

撤消授權

        REVOKE SELECT ON cactidb.* FROM 'cactiuser'@'%';   

        (一般讀權限可以給但寫權限要慎重)

忘記管理者密碼如何處理

1.關閉目前MySQL

# service mysqld stop

2.編輯啟動腳本

# vim /etc/init.d/mysqld

在這裡找到此行$bindir/mysqld_safe --datadir="$datadir" 

在mysqld_safe後空格添加 --skip-grant-tables --skip-network

儲存退出

3.啟動mysqld

# service mysqld start

此時登入mysql時便不需要輸入密碼

4.進入資料庫後修改mysql的root密碼

UPDATE user SET Password=PASSWORD('1234') WHERE User='root'; 

(同時更改三個root密碼)

5.修改好後停止mysqld,然後再将剛剛加的字元去除,再重新啟動即恢複正常

(此時便可使用新配置的mysql密碼來進行登入mysql伺服器)

SET PASSWORD FOR 'root'@'localhost'=PASSWORD('1234');  

(注意在使用了跳過權限控制選項情況下,此條語句不可修改使用者密碼)

--skip-grant-tables 跳過權限控制

--skip-networking 不可以使用網絡登入

本文轉自Winthcloud部落格51CTO部落格,原文連結http://blog.51cto.com/winthcloud/1891183如需轉載請自行聯系原作者

Winthcloud