MySQL的用户管理mysql
用户帐号格式sql
username@hostname
查看帮助数据库
MySQL > help contents; MySQL > help account management;
帐号管理命令(此时权限颇有限)
bash
create user drop user rename user set password
权限管理命令:ide
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';
为用户设置密码spa
MySQL > help set password; SET PASSWORD [FOR user] = { PASSWORD('cleartext password') } MySQL > set password for testuser@'172.16.%.%' = password('123456'); 调用password函数
MySQL的权限类型:线程
库级别3d
表级别
字段级别
管理类
程序类(存储过程,触发器,存储函数,时间调度器)
管理类权限
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的每一次操做几乎都要涉及权限管理检查,因此把受权表载入内存中(为了提高速度)