MySQL用户和权限管理
权限类别:
库级别
表级别
字段级别
管理类
程序类
管理类:
CREATE TEMPORARY TABLES #创建临时表,临时表大概有16M空间
CREATE USER #创建用户
FILE #创建文件
SUPER #高级别管理操作,例如:复制,权限授权等高级权限
SHOW DATABASES #一般而言授权给所有用户
RELOAD #重新装载授权表的
SHUTDOWN #是否拥有进程级别关闭的权限
REPLICATION SLAVE #复制的方式连接至服务器端
REPLICATION CLIENT #是否有权限去请求复制主数据库产生的数据的
LOCK TABLES #锁表权限
PROCESS #进程权限,列出进程列表。
程序类:
FUNCTION #
PROCEDURE
TRIGGER #触发器
CREATE, ALTER, DROP, EXCUTE(执行)
库和表级别:TABLE or DATABASE
ALTER #修改
CREATE
CREATE VIEW
DROP
INDEX
SHOW VIEW
GRANT OPTION:能够把自己获得的权限赠经其他用户一个副本;
数据操作:
SELECT
INSERT
DELETE
UPDATE
字段级别: DELETE没有字段级别的权限
SELECT(col1,col2,...)
UPDATE(col1,col2,...)
INSERT(col1,col2,...)
所有有限:ALL PRIVILEGES, ALL
元数据数据库:mysql 该表中保存了相关的用户和授权
授权表:
db, host, user
columns_priv, tables_priv, procs_priv, proxies_priv
用户账号:
'USERNAME'@'HOST':
@'HOST':
主机名;
IP地址或Network;
通配符:
%, _: 172.16.%.%
创建用户:CREATE USER
CREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password'];
查看用户获得的授权:SHOW GRANTS FOR
SHOW GRANTS FOR 'USERNAME'@'HOST'
用户重命名:RENAME USER
RENAME USER old_user_name TO new_user_name
删除用户:DROP USER 'USERNAME'@'HOST'
mysql刷新权限命令:FLUSH PRIVILEGES;
修改密码:
(1) SET PASSWORD FOR
(2) UPDATE mysql.user SET password=PASSWORD('your_password') WHERE clause;
(3) mysqladmin password
mysqladmin [OPTIONS] command command....
-u, -h, -p
忘记管理员密码的解决办法:
(1) 启动mysqld进程时,为其使用:--skip-grant-tables --skip-networking
(2) 使用UPDATE命令修改管理员密码
(3) 关闭mysqld进程,移除上述两个选项,重启mysqld;
授权:GRANT
GRANT priv_type[,...] ON [{table|function|procedure}] db.{table|routine} TO 'USERNAME'@'HOST' [IDENTIFIED BY 'password']
[REQUIRE SSL] [WITH with_option]
with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
取消授权:REVOKE
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...