创建用户并授权:
语法: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'; # 查看指定用户的授权信息