创建用户并授权:
语法:grant privileges on dbName.tableName to user@host identified by "password";
flush privileges;
privileges 表示要授予的权限,常见的权限有:
all 所有权限
select 查询权限
delete 删除权限
update 更新权限
create 创建权限
insert 插入权限
drop 删除数据库、数据表权限
dbName.tableName 表示对哪些库的哪些表进行授权,常见用法如下:
*.* 表示对所有库的所有表进行授权
dbName.* 表示对指定库的所有表进行授权
dbName.tableName 表示对指定库的指定表进行授权
user@host 表示授权给哪个用户以及允许该用户从哪里登录到数据库,常见用法如下:
'user'@'localhost' 表示只允许该用户只能从本地登录到数据库
'user'@'%' 表示允许该用户可以从任何一台机器远程登录到数据库
'user'@'192.168.1.2' 表示只允许该用户只能从192.168.1.2这台主机远程登录到数据库
"password" 用于设置用户密码
flush privileges; 用于刷新用户权限
PS:
如果用户不存在,则会自动创建用户
如果用户存在,则会修改用户的权限及密码
例子:
mysql> grant all on *.* to 'user1'@'localhost' identified by 'password'; mysql> grant all on db1.* to 'user2'@'%' identified by 'password'; mysql> grant select,insert on db1.* to 'user3'@'192.168.1.2' identified by 'password';
# 分别表示:
# 创建 user1 用户,允许对所有库的所有表进行增删查改等所有操作,且只能从本地登录到数据库
# 创建 user2 用户,允许对db1库的所有表进行增删查改等所有操作,且可以从任意一台主机远程登录到数据库
# 创建 user3 用户,只允许对db1库的所有表进行查询和插入操作,且只能从192.168.1.2这台主机远程登录到数据库
mysql> flush privileges; # 授权完之后要刷新权限 mysql> show grants; # 查看所有用户的授权信息 mysql> show grants for 'user2'@'192.168.1.2'; # 查看指定用户的授权信息