管理MySQL用户账户
MySQL服务器的权限全部存放在mysql库中的几个权限表。(如下表)
权限表
权限表的内容
user
可连接到服务器的用户和他们的全局权限
db
数据库级权限
tables_priv
数据表级权限
column_priv
数据列级权限
procs_priv
与存储例程有关的权限
对于mysql数据库的操作注意通过下面这些账户管理SQL语句完成:
create user ; drop user ; rename user;
grant;
revoke;
set password;
show grants;
如果grant的权限给定了库、表、列。那么它们将被分别记录到db、tables_priv、column_priv权限表里。revoke也是从相关表里将记录删除掉。
注:如果MySQL版本升级到一个新的版本,要运行mysql_update命令把那些权限表也升级到新版本的结构。
1、高级mysql用户管理
1)创建用户
create user 'user'@'hostname' identified by
'passwd';
通配符:
“%”字符是一个通配符,主机名如果设置为“%”,就表示“任意一台主机”。
“-”也可以用在主机名部分里,可以匹配任意单个字符。
例:如果让用户从a.com域中的任意一台主机去连接服务器,需要把主机名设置“%.a.com”
create user 'username'@'%.a.com' identified
by 'passwd';
如果让用户从网段中访问,也可以使用网段或者“192.168.1.%”
create user 'username'@'192.168.1.%'
identified by 'passwd';
2)删除用户
3)重命名用户
2、对账户授权
grant privileges (column) on dbname.tablename to 'username'@'hostname' identified
by 'passwd' [REQUIRE] [WITH]
1)确定账户的权限
可以授予用户的权限分为很多种,我们把这些权限按照管理类别分表。
数据库管理权限表
权限名
该权限所允许的操作
Create user
创建用户
File
读、写MySQL服务器主机上的文件
Grant Option
授权
Process
查看服务器运行的线程
Reload
重新加载权限数据表或者更新日志及缓存
Replication client
查询主/从服务器的运行地点
Replication slave
以复制的从服务器运行
Show database
用show database 语句查看全体数据库的名字
Shutdown
关闭服务器
Super
用kill命令终止线程以及进行其他超级用户操作
数据库对象操作权限
权限名
该权限所允许的操作
Alter
更改数据表和索引的定义
Alter routine
更改或者删除存储函数和存储过程
Create
创建数据库和数据表
Create routine
创建存储函数和存储过程
Create temporary tables
用temporary关键字创建临时数据表
Create view
创建视图
Delete
删除数据表里的现有数据行
Drop
删除数据库、数据表和其他对象
Event
为事件调度程序创建、删除或修改各种事件
Execute
执行存储函数和存储过程
Index
创建或删除索引
Insert
插入数据
Lock tables
用lock tables 语句明确锁定数据表
Select
查询
Show view
用show create view 语句查看视图的定义
Trigger
创建或者删除触发器
Update
修改数据行
其他权限
权限名
该权限所允许的操作
All
所有操作(不包括grant)
Usage
一个特殊的“无权限”权限
权限级别限定符
权限限定符
有关权限的作用范围
ON *.*
全局级
ON dbname.*
数据库级
ON dbname.tablename
数据表级
ON tablename
数据表级
ON dbname.routine_name
存储例程权限
2)使用“无权限”的USAGE权限
USAGE的用法是:授予全局级USAGE权限,指定账户名,给出该账户与权限无关的特性值。
比如:如果你想在不影响账户权限的前提下改变该账户的口令,或要求用户必须使用SSL连接,或者想对该账户限制连接,可以使用下面几条语句:
grant usage on *.* to account identified by 'passwd';
grant usage on *.* to account require SSL;
grant usage on *.* to account with max_connections_per_hour
10;
3、查看账户的权限
4、撤销权限和删除用户
revoke privileges on dbname.tablename from 'username'@'hostname';
5、改变口令
set password for 'username'@'hostname' =
PASSWORD ('passwd')