MySQL的用户管理
用户账号格式
username@hostname
查看帮助
MySQL > help contents; MySQL > help account management;
账号管理命令(此时权限很有限)
create user drop user rename user set password
权限管理命令:
grant revoke
查看创建用户命令帮助
MySQL> help create user; CREATE USER username@hostname [ IDENTIFIED BY [PASSWORD] ‘password‘ ] 主机也可以使用通配符:testuser@‘172.16.100.1__‘(172.16.100.100-172.16.100.199) (两个下划线) 还可以使用%:testuser@‘172.16.%.%‘ 查看用户能够使用的权限:show grants for username@‘hostname‘
重命名
MySQL > help rename user RENAME USER old_user TO new_user [, old_user TO new_user] ... mysql > RENAME USER ‘jeffrey‘@‘localhost‘ TO ‘jeff‘@‘127.0.0.1‘;
为用户设置密码
MySQL > help set password; SET PASSWORD [FOR user] = { PASSWORD(‘cleartext password‘) } MySQL > set password for testuser@‘172.16.%.%‘ = password(‘123456‘); 调用password函数
MySQL的权限类型:
库级别
表级别
字段级别
管理类
程序类(存储过程,触发器,存储函数,时间调度器)
管理类权限
create temporary tables 临时表
create user
file 允许用户读或者写某些文件
lock tables 添加显式锁
process:查看用户的线程
reload:相当于执行flush和reset
replication client 查询有哪些复制客户端
replication slave 赋予用户复制权限
show databases
shutdown
super
数据库访问权限(库级别和表级别)
alter:modify tables with alter tables
alter routine 修改存储历程
create
create routine 存储过程,存储函数
create view
delete
drop
execute 是否能够执行存储过程,或存储函数
grant option 将自己的权限复制给别的用户
index 索引
show view
数据操作类权限(表级别)
select
insert
update
delete
字段级别:
select(col1,....)
update(col1,....)
insert(col1,....)
所有权限
ALL [privileges]
查看帮助
MySQL > help GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user_specification [, user_specification] ... [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}] [WITH with_option ...] object_type:(默认为表) TABLE | FUNCTION | PROCEDURE priv_level: * | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_name user_specification: user [ IDENTIFIED BY [PASSWORD] ‘password‘ | IDENTIFIED WITH auth_plugin [AS ‘auth_string‘] ] //可以实现授权并添加密码 ssl_option: SSL ... with_option: GRANT OPTION 转赠给别人 | MAX_QUERIES_PER_HOUR count 每小时允许执行的最大查询次数 | MAX_UPDATES_PER_HOUR count 每小时允许执行的最大更新次数 | MAX_CONNECTIONS_PER_HOUR count 每小时允许执行的最大连接次数 | MAX_USER_CONNECTIONS count 使用同一个账号可以同时连接的次数
实例
给testuser用户授权 MySQL > grant create on testdb.* to testuser@‘192.168.139.1__‘;
此时testuser只能创建testdb库
查看自己的权限 MySQL > show grants for testuser@‘192.168.139.1__‘;
此时可以在该数据库下创建表,但是由于没有select和drop权限,
所以不能查看表数据及结构,不能删除表
给testuser用户删除表的权限 MySQL > grant drop on testdb.* to testuser@‘192.168.139.1__‘; 查看权限 MySQL > show grants for testuser@‘192.168.139.1__‘;
给testuser用户增、删、查、改权限 MySQL > grant select,insert,update,delete on testdb.* to testuser@‘192.168.139.1__‘; 查看权限 MySQL > show grants for testuser@‘192.168.139.1__‘;
注意:要想创建库应该对所有表都有权限
收回授权
MySQL > help REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ... REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ... REVOKE PROXY ON user FROM user [, user] ...
例子:
MySQL > revoke insert,select on testdb.* from testuser@‘192.168.139.1__‘; 查看权限 MySQL > show grants for testuser@‘192.168.139.1__‘;
几个跟用户授权相关的表:(在mysql库中)
db:库级别的权限 host:主机级别权限,已废弃 tables_priv:表级别权限 columns_priv:列级别的权限 procs_priv:存储过程和存储函数相关的权限 proxies_priv:代理用户权限·
MySQL的每一次操作几乎都要涉及权限管理检查,所以把授权表载入内存中(为了提升速度)
本文出自 “似水流年” 博客,请务必保留此出处http://sixijie123.blog.51cto.com/11880770/1883685
原文地址:http://sixijie123.blog.51cto.com/11880770/1883685