关于MySQL用户权限,用户信息修改

基本操作

查看现有用户

1
mysql> SELECT host,user,authentication_string FROM mysql.user;

创建用户(% 允许任意ip登录,可固定ip, 192.168.1.% ip段登录, localhost 本地登录)

1
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'password';

删除用户

1
mysql> DROP USER 'username'@'host';

更改用户名

1
mysql> RENAME USER 'jack'@'%' to 'jim'@'%';

修改密码

1
2
3
4
5
// 1.用 set password 命令
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

// 2.用mysqladmin
mysqladmin -uroot -p旧密码 password 新密码

授权

格式:

1
mysql> GRANT privileges ON databasename.tablename TO 'username'@'host' IDENTIFIED BY 'password' WITH GRANT OPTION;

1. GRANT命令说明:

  • priveleges (权限列表,底部附权限列表),可以是 ALL PRIVILEGES 表示所有权限,也可以是 selectupdate 等权限,多个权限的名词,相互之间用逗号分开。
  • ON 后面指定权限针对哪些库和表,*.* 表示所有库所有表。
  • TO 表示将权限赋予某个用户。
  • IDENTIFIED BY 指定用户的登录密码,该项可以省略。
  • WITH GRANT OPTION 表示该用户可以将自己拥有的权限授权给别人,该项可以省略。
  • 备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个 select 权限,然后又给用户添加一个 insert 权限,那么该用户就同时拥有了 selectinsert 权限。

2. 授权原则说明:

权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:

  1. 只授予能满足需要的最小权限。
  2. 初始化数据库的时候删除没有密码的用户。
  3. 为每个用户设置满足密码复杂度的密码。
  4. 定期清理不需要的用户,回收权限或者删除用户。

eg:

1
2
3
4
5
6
7
8
// 授予 user1 用户通过外网IP对于所有数据库的全部权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%';

// 授予 user1 用户在本地服务器对于 database1 数据库的查询和更新权限
mysql> GRANT select,update ON `database1`.* TO 'user1'@'localhost';

// 刷新权限(修改完权限需要刷新才会生效)
mysql> flush privileges;

查看当前用户权限

1
mysql> SHOW GRANTS;

查看其他用户的权限

1
mysql> SHOW GRANTS FOR 'user1'@'%';

删除权限

1
mysql> REVOKE insert ON test.* FROM 'user1'@'%';

附:Mysql权限列表

权限 作用范围 作用
all 服务器 所有权限
select 表、列 选择行
insert 表、列 插入行
update 表、列 更新行
delete 删除行
create 数据库、表、索引 创建
drop 数据库、表、视图 删除
reload 服务器 允许使用flush语句
shutdown 服务器 关闭服务
process 服务器 查看线程信息
file 服务器 文件操作
grant option 数据库、表、存储过程 授权
references 数据库、表 外键约束的父表
index 创建/删除索引
alter 修改表结构
show databases 服务器 查看数据库名称
super 服务器 超级权限
create temporary tables 创建临时表
lock tables 数据库 锁表
execute 存储过程 执行
replication client 服务器 允许查看主/从/二进制日志状态
replication slave 服务器 主从复制
create view 视图 创建视图
show view 视图 查看视图
create routine 存储过程 创建存储过程
alter routine 存储过程 修改/删除存储过程
create user 服务器 创建用户
event 数据库 创建/更改/删除/查看事件
trigger 触发器
create tablespace 服务器 创建/更改/删除表空间/日志文件
proxy 服务器 代理成为其它用户
usage 服务器 没有权限