mysql用户账号操作

作者: daodaoliang
日期: 2017-07-10
版本: 0.0.3
邮箱: daodaoliang@yeah.net

0x01 新建用户

  • 登陆mysql
1
mysql -u root -p
  • 创建用户(5.7系列以前)
1
2
insert into mysql.user(Host,User,Password) values("localhost","用户名",password("密码"));
mysql>flush privileges;
  • 创建用户(通用)
1
2
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
flush privileges;

这样就创建了用户,可以登陆试一下;

0x02 为用户授权

登陆mysql

1
mysql -u root -p

授权用户拥有数据库的所有权限。

1
2
grant all privileges on *.* to 用户名@'地址' identified by '密码';
flush privileges;

指定部分权限的话,可以这样子写:

1
2
grant select,update on *.* to 用户名@'地址' identified by '密码';
flush privileges;

特别注意:

格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by “用户密码”;

@ 后面是访问mysql的客户端IP地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为本地访问(那此用户就不能远程访问该mysql数据库了)。

0x03 删除用户

登陆mysql后

1
2
mysql>DELETE FROM user WHERE User="phplamp" and Host="localhost";
mysql>flush privileges;

或者

1
drop user daodaoliang@'%'

0x04 修改指定用户密码

  • 用UPDATE直接编辑user表(5.7之前版本)
1
2
update mysql.user set password=password('新密码') where User="phplamp";
flush privileges;
  • 用UPDATE直接编辑user表(5.7之后版本)
1
2
update user set authentication_string=password('新密码') where user='root';
flush privileges;
  • 用mysqladmin
1
2
3
mysqladmin -u root password "newpass"
# 若设置过root密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
  • 用SET PASSWORD命令(通用)
1
SET PASSWORD FOR 'root@localhost' = PASSWORD('newpass');

0x05 修改或者忘记ROOT密码

  • 停止数据库服务
1
/etc/init.d/mysql stop
  • 跳过权限表安全启动
1
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
  • 重新登录mysql
1
mysql -u root mysql
  • 修改root密码
1
2
SET PASSWORD FOR 'root@%' = PASSWORD('newpass');
FLUSH PRIVILEGES;
  • 重新启动mysql服务
1
/etc/init.d/mysql restart

0x06 重命名用户账号

1
rename user daodaoliang@'%' to nami@'%'
------ 本文结束 ------