mysql怎么访问用户B_MySQL访问控制和用户管理
訪問控制
你需要給用戶提供他們所需的訪問權(quán),且僅提供他們所需的訪問權(quán)。這就是所謂的訪問控制,管理訪問控制需要創(chuàng)建和管理用戶賬號。
多數(shù)用戶只需要對表進(jìn)行讀和寫,但少數(shù)用戶甚至需要能創(chuàng)建和刪除表;
某些用戶需要讀表,但可能不需要更新表;
你可能想允許用戶添加數(shù)據(jù),但不允許他們刪除數(shù)據(jù);
某些用戶(管理員)可能需要處理用戶賬號的權(quán)限,但多數(shù)用戶不需要;
你可能想讓用戶通過存儲過程訪問數(shù)據(jù),但不允許他們直接訪問數(shù)據(jù);
你可能想根據(jù)用戶登錄的地點限制對某些功能的訪問。
不要使用root 應(yīng)該嚴(yán)肅對待root登錄的使用。僅在絕對需要時使用它(或許在你不能登錄其他管理賬號時使用)。不應(yīng)該在日常的MySQL操作中使用root。
管理用戶
mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SELECT user FROM user;
+------------------+
| user |
+------------------+
| debian-sys-maint |
| mysql.infoschema |
| mysql.session |
| mysql.sys |
| root |
+------------------+
5 rows in set (0.00 sec)
mysql數(shù)據(jù)庫有一個名為user的表,它包含所有用戶賬號。user表有一個名為user的列,它存儲用戶登錄名。
創(chuàng)建用戶賬號
mysql> CREATE USER ben IDENTIFIED BY 'p@$$w0rd';
Query OK, 0 rows affected (0.06 sec)
CREATE USER創(chuàng)建一個新用戶賬號。在創(chuàng)建用戶賬號時不一定需要口令。
指定散列口令 IDENTIFIED BY指定的口令為純文本,MySQL將在保存到user表之前對其進(jìn)行加密。為了作為散列值指定口令,使用IDENTIFIED BY PASSWORD。
使用GRANT或INSERT GRANT語句(稍后介紹)也可以創(chuàng)建用戶賬號,但一般來說CREATE USER是最清楚和最簡單的句子。此外,也可以通過直接插入行到user表來增加用戶,不過為安全起見,一般不建議這樣做。MySQL用來存儲用戶賬號信息的表(以及表模式等)極為重要,對它們的任何毀壞都可能嚴(yán)重地傷害到MySQL服務(wù)器。因此,相對于直接處理來說,最好是用標(biāo)記和函數(shù)來處理這些表。
重命名賬戶
mysql> RENAME USER ben TO bforta;
Query OK, 0 rows affected (0.01 sec)
MySQL 5之前 僅MySQL 5或之后的版本支持RENAME USER。為了在以前的MySQL中重命名一個用戶,可使用UPDATE直接更新user表。
刪除用戶賬號
mysql> DROP USER bforta;
Query OK, 0 rows affected (0.00 sec)
在MySQL 5以前,DROP USER只能用來刪除用戶賬號,不能刪除相關(guān)的權(quán)限。因此,如果使用舊版本的MySQL,需要先用REVOKE刪除與賬號相關(guān)的權(quán)限,然后再用DROP USER刪除賬號。
設(shè)置訪問權(quán)限
SHOW GRANTS FOR username@localhost;
為看到賦予用戶賬號的權(quán)限,使用SHOW GRANTS FOR。
用戶定義為user@host MySQL的權(quán)限用用戶名和主機名結(jié)合定義。如果不指定主機名,則使用默認(rèn)的主機名%(授予用戶訪問權(quán)限而不管主機名)。
為設(shè)置權(quán)限,使用GRANT語句。GRANT要求你至少給出以下信息:
要授予的權(quán)限;
被授予訪問權(quán)限的數(shù)據(jù)庫或表;
用戶名。
GRANT SELECT ON crashcourse.* TO bforta;
此GRANT允許用戶在crashcourse.*(crashcourse數(shù)據(jù)庫的所有表)上使用SELECT。通過只授予SELECT訪問權(quán)限,用戶bforta對crashcourse數(shù)據(jù)庫中的所有數(shù)據(jù)具有只讀訪問權(quán)限。
GRANT的反操作為REVOKE,用它來撤銷特定的權(quán)限。
REVOKE SELECT ON crashcourse.* FROM bforta;
這條REVOKE語句取消剛賦予用戶bforta的SELECT訪問權(quán)限。被撤銷的訪問權(quán)限必須存在,否則會出錯。
GRANT和REVOKE可在幾個層次上控制訪問權(quán)限:
整個服務(wù)器,使用GRANT ALL和REVOKE ALL;
整個數(shù)據(jù)庫,使用ON database.*;
特定的表,使用ON database.table;
特定的列;
特定的存儲過程。
列出可以授予或撤銷的每個權(quán)限。
權(quán) 限
說 明
ALL
除GRANT OPTION外的所有權(quán)限
ALTER
使用ALTER TABLE
ALTER ROUTINE
使用ALTER PROCEDURE和DROP PROCEDURE
CREATE
使用CREATE TABLE
CREATE ROUTINE
使用CREATE PROCEDURE
CREATE TEMPORARY TABLES
使用CREATE TEMPORARY TABLE
CREATE USER
使用CREATE USER、DROP USER、RENAME USER和REVOKE ALL PRIVILEGES
CREATE VIEW
使用CREATE VIEW
DELETE
使用DELETE
DROP
使用DROP TABLE
EXECUTE
使用CALL和存儲過程
FILE
使用SELECT INTO OUTFILE和LOAD DATA INFILE
GRANT OPTION
使用GRANT和REVOKE
INDEX
使用CREATE INDEX和DROP INDEX
INSERT
使用INSERT
LOCK TABLES
使用LOCK TABLES
PROCESS
使用SHOW FULL PROCESSLIST
RELOAD
使用FLUSH
REPLICATION CLIENT
服務(wù)器位置的訪問
REPLICATION SLAVE
由復(fù)制從屬使用
SELECT
使用SELECT
SHOW DATABASES
使用SHOW DATABASES
SHOW VIEW
使用SHOW CREATE VIEW
SHUTDOWN
使用mysqladmin shutdown(用來關(guān)閉MySQL)
SUPER
使用CHANGE MASTER、KILL、LOGS、PURGE、MASTER和SET GLOBAL。還允許mysqladmin調(diào)試登錄
UPDATE
使用UPDATE
USAGE
無訪問權(quán)限
未來的授權(quán) 在使用GRANT和REVOKE時,用戶賬號必須存在,但對所涉及的對象沒有這個要求。這允許管理員在創(chuàng)建數(shù)據(jù)庫和表之前設(shè)計和實現(xiàn)安全措施。這樣做的副作用是,當(dāng)某個數(shù)據(jù)庫或表被刪除時(用DROP語句),相關(guān)的訪問權(quán)限仍然存在。而且,如果將來重新創(chuàng)建該數(shù)據(jù)庫或表,這些權(quán)限仍然起作用。
簡化多次授權(quán) 可通過列出各權(quán)限并用逗號分隔,將多條GRANT語句串在一起
更改口令
mysql> SET PASSWORD FOR bforta=PASSWORD ('P@ssW0rd');
Query OK, 0 rows affected (0.01 sec)
SET PASSWORD更新用戶口令。新口令必須傳遞到Password()函數(shù)進(jìn)行加密。
SET PASSWORD還可以用來設(shè)置你自己的口令
mysql> SET PASSWORD =PASSWORD ('P@ssW0rd');
Query OK, 0 rows affected (0.01 sec)
在不指定用戶名時,SET PASSWORD更新當(dāng)前登錄用戶的口令。
總結(jié)
以上是生活随笔為你收集整理的mysql怎么访问用户B_MySQL访问控制和用户管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql流程控制_Mysql之流程控制
- 下一篇: mysql group by 范围_My