mysql 权限管理与用户操作
安全管理
设置用户对数据库、表的各种权限
管理员对用户、数据库、对表的权限
MySQL Administrator,图形用户界面,可视化操作。
MySQL创建一个名为root的用户账号,它对整个MySQL服务器具有完全的控制。
MySQL用户账号和信息存储在数据库名为mysql的user表中。
用户的CRUD
用户定义:
user_name@host_name
如果不指定主机名,则使用默认的主机名%(授予用户访问权限而不管主机名)。
创建用户:
CREATE USER user_name IDENTIFIED BY 'psw';
INSERT
或GRANT
语句创建用户,不推荐。
重命名用户:
RENAME USER usr_name TO re_usr_name;
UPDATE
更新user表也是一样的。
删除用户账号:
DROP URSER user_name;
查看用户权限:
SHOW GRANTS FOR user_name;
有一个权限USAGE ON *.*
。USAGE表示根本没有权限。
设置访问权限
新创建的用户没有访问权限。这些账号能登录mysql,但看不到数据,并且不能执行任何操作。
GRANT
语句:
要授予的权限;GRANT manipulations
被授予访问权限的数据库或表;ON database_name.*[|table_name]
用户名。TO user
GRANT INSERT[, DELETE, SELECT,...] se_name.table_name TO user_name;
GRANT
的反操作为**REVOKE
,用它来撤销特定的权限**。
在使用GRANT和REVOKE时,用户账号必须存在,但对所涉及的对象没有这个要求。
即,GRANT和REVOKE只检要求用户存在,对表和数据库不做要求。
换言之,当某个表或数据库被删除,如果重建,权限依然有效。
权限层次与名称
控制访问权限的范围:
GRANT
和REVOKE
可在几个层次上控制访问权限:
整个服务器,使用GRANT ALL
和REVOKE ALL
;
整个数据库,使用ON database.*
;
特定的表,使用ON database.table
;
特定的列;
特定的存储过程。
具体权限说明:
权限 | 说明 |
---|---|
ALL | 除GRANT OPTION外的所有权限 |
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 | 服务器位置的访问 |
REPLICATION SLAVE | 由复制从属使用 |
SELECT | 使用SELECT |
SHOW DATABASES | 使用SHOW DATABASES |
SHOW VIEW | 使用SHOW CREATE VIEW |
SHUTDOWN | 使用mysqladmin shutdown(用来关闭MySQL) |
SUPER | 使用CHANGE MASTER、KILL、LOGS、PURGE、MASTER和SET GLOBAL。还允许mysqladmin调试登录 |
UPDATE | 使用UPDATE |
USAGE | 无访问权限 |
更改用户口令
更改特定用户口令:
SET PASSWORD FOR user_name = Password( 'new_psw' );
更改自己的口令:
SET PASSWORD Password( 'new_psw' );
Password()函数对口令进行加密。