MySQL操作規範(總結)

來源:互聯網
上載者:User

MySQL操作規範(總結)

使用者權限管理

建立使用者

命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

說明:

Username所建立的使用者名稱

host 指定該使用者在哪個主機上可以登陸,如果是本機使用者可用localhost, 如果想讓該使用者可以從任意遠程主機登陸,可以使用萬用字元%.

password該使用者的登陸密碼,密碼可以為空白,如果為空白則該使用者可以不要求輸入密碼登陸伺服器.

如: CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';

註:建立使用者時也可以向user表中添加使用者資訊實現添加使用者。

許可權分配

MySQL許可權原則:

許可權控制主要是出於安全因素,因此需要遵循一下幾個經驗原則:

1、只授予能滿足需要的最小許可權,防止使用者越權。如使用者只是需要查詢,那就只賦予select許可權,不要給使用者賦予update、insert或者delete許可權。

2、建立使用者的時候限制使用者的登入主機,一般是限制成指定IP或者內網IP段。

3、初始化資料庫的時候刪除沒有密碼的使用者。安裝完資料庫的時候會自動建立一些使用者,這些使用者預設沒有密碼。

4、為每個使用者佈建滿足密碼複雜度的密碼。

5、定期清理不需要的使用者。回收許可權或者刪除使用者。

MySQL許可權一覽:

許可權

權限等級

許可權說明

CREATE

資料庫、表或索引

建立資料庫、表或索引許可權

DROP

資料庫或表

刪除資料庫或表許可權

GRANT OPTION

資料庫、表或儲存的程式

賦予許可權選項

REFERENCES

資料庫或表

 

ALTER

更改表,比如添加欄位、索引等

DELETE

刪除資料許可權

INDEX

索引許可權

INSERT

插入許可權

SELECT

查詢許可權

UPDATE

更新許可權

CREATE VIEW

視圖

建立視圖許可權

SHOW VIEW

視圖

查看視圖許可權

ALTER ROUTINE

預存程序

更改預存程序許可權

CREATE ROUTINE

預存程序

建立預存程序許可權

EXECUTE

預存程序

執行預存程序許可權

FILE

伺服器主機上的檔案訪問

檔案存取權限

CREATE TEMPORARY TABLES

伺服器管理

建立暫存資料表許可權

LOCK TABLES

伺服器管理

鎖表許可權

CREATE USER

伺服器管理

建立使用者權限

PROCESS

伺服器管理

查看進程許可權

RELOAD

 

 

伺服器管理

執行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的許可權

REPLICATION CLIENT

伺服器管理

複製許可權

REPLICATION SLAVE

伺服器管理

複製許可權

SHOW DATABASES

伺服器管理

查看資料庫許可權

SHUTDOWN

伺服器管理

關閉資料庫許可權

SUPER

伺服器管理

執行kill線程許可權

MySQL的許可權如何分布,就是針對錶可以設定什麼許可權,針對列可以設定什麼許可權等等,這個可以從官方文檔中的一個表來說明:

許可權分布

可能的設定的許可權

表許可權

'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'

列許可權

'Select', 'Insert', 'Update', 'References'

過程許可權

'Execute', 'Alter Routine', 'Grant'

MySQL許可權控制:

1、GRANT命令使用說明:

建立一個只允許從本地登入的超級使用者fog,並允許將許可權賦予別的使用者,密碼為:test123

mysql> grant all privileges on *.* to fog@'localhost' identified by "test123" with grant option;

GRANT命令說明:

ALL PRIVILEGES 是表示所有許可權,你也可以使用select、update等許可權。

ON 用來指定許可權針對哪些庫和表。

*.* 中前面的*號用來指定資料庫名,後面的*號用來指定表名。

TO 表示將許可權賦予某個使用者。

fog@'localhost'表示fog使用者,@後面接限制的主機,可以是IP、IP段、網域名稱以及%,%表示任何地方。注意:這裡%有的版本不包括本地,以前碰到過給某個使用者佈建了%允許任何地方登入,但是在本地登入不了,這個和版本有關係,遇到這個問題再加一個localhost的使用者。

IDENTIFIED BY 指定使用者的登入密碼。

WITH GRANT OPTION 這個選項表示該使用者可以將自己擁有的許可權授權給別人。

注意:經常有人在建立操作使用者的時候不指定WITH GRANT OPTION選項導致後來該使用者不能使用GRANT命令建立使用者或者給其它使用者授權。

2、重新整理許可權

使用這個命令使許可權生效,尤其是你對那些許可權表user、db、host等做了update或者delete更新的時候。以前遇到過使用grant後許可權沒有更新的情況,只要對許可權做了更改就使用FLUSH PRIVILEGES命令來重新整理許可權。

mysql> flush privileges;

3、查看許可權

查看目前使用者的許可權:

mysql> show grants;

+---------------------------------------------------------------------+

| Grants for root@localhost                                          |

+---------------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |

| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |

+---------------------------------------------------------------------+

查看某個使用者的許可權:

mysql> show grants for 'fog'@'%';

4、回收許可權

mysql> revoke delete on *.* from 'fog'@'localhost';

5、刪除使用者

mysql> drop user 'fog'@'localhost';

Query OK, 0 rows affected (0.01 sec)

6、對賬戶重新命名

mysql> rename user 'fog'@'%' to 'jim'@'%';

7、修改密碼

1、用set password命令

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

2、用mysqladmin

[root@rhel5 ~]# mysqladmin -uroot -p123456 password 1234abcd

格式:mysqladmin -u使用者名稱 -p舊密碼 password 新密碼

3、用update直接編輯user表

mysql> use mysql

mysql> update user set PASSWORD = PASSWORD('1234abcd') where user = 'root';

mysql> flush privileges;

更多詳情見請繼續閱讀下一頁的精彩內容:

  • 1
  • 2
  • 下一頁

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.