正常情况下,root用户才有权限进行用户创建(可以为创建的用户赋予跟root一样的权限),所以我们先登录root用户。
mysql的用户名是root
,密码是123456
。
mysql -u root -p123456
# or
mysql -u root -p
Enter password:
mysql -u test -h 113.186.203.114 -p 123456
创建用户这一步是关键。首先,我们需要知道的是访问mysql有两种方式
本地IP访问
。例如,在113.219.186.18这个机器上安装了好了mysql,而且服务已经开启,然后你在这台机器上要访问mysql,这就是本地IP访问。外网IP访问
。例如,在113.219.186.181这个机器上安装好了mysql,而且服务已经开启,然后你在103.219.186.181这个机器上来远程访问113.219.186.181上的mysql,这就是外网IP访问。创建一个用户名为admin
,密码为123456
的本地用户。
方式一
mysql> create user 'admin'@'localhost' identified by '123456';
方式二
使用grant来可以给用户赋予指定的权限,当这个用户和host的组合不存在时,则会新建。
关于grant
的使用详解请移步这篇博客 mysql grant 用户权限总结
# 格式
mysql> grant [权限1,权限2...] on 某库.某表 to 新用户名@'主机名/IP地址' identified by '密码';
# 例子:增加一个用户为admin,密码为123456,本地用户可访问。
# 使admin用户获得所有数据库中所有表的(*.*)select、insert、update、delete权限
mysql> grant select,insert,update,delete on *.* to 'admin'@'localhost' identified by '123456';
# 使admin用户获得所有权限。
mysql> grant all privileges on *.* to 'admin'@'localhost' identified by '123456';
# 如果只想让该用户访问某一个库,只需要将上面的*.*改成 数据库名.*。例如,只让admin用户访问csdn这个数据库下的所有表,当然也可以指定某个表,自己试试吧。
mysql> grant all privileges on csdn.* to 'admin'@'localhost' identified by '123456';
创建一个用户名为admin
,密码为123456
的外网可访问用户。
方式一
mysql> create user 'admin'@'%' identified by '123456';
方式二
# 例子:增加一个用户为admin,密码为123456,让所有外网IP都能访问。
# 使admin用户获得所有数据库中所有表的(*.*)select、insert、update、delete权限
mysql> grant select,insert,update,delete on *.* to 'admin'@'%' identified by '123456';
# 使admin用户获得所有权限。
mysql> grant all privileges on *.* to 'admin'@'%' identified by '123456';
# 如果只想让该用户访问某一个库,只需要将上面的*.*改成 数据库名.*。例如,只让admin用户访问csdn这个数据库下的所有表,当然也可以指定某个表,自己试试吧。
mysql> grant all privileges on csdn.* to 'admin'@'%' identified by '123456';
记得刷新授权才会生效。
mysql> flush privileges;
值得一提的是,本地访问需要用本地用户,外网访问需要用外网用户。
下面代码都是修改的本地admin用户的密码。
mysql> set password for 'admin'@'localhost'=password('111111');
# 或者
mysql> UPDATE mysql.user SET Password=PASSWORD('111111') WHERE
User='admin' and host='localhost';
# 或者
mysql> use mysql;
mysql> update user set password=password('123') where user='admin' and host='%';
mysql> set password for 'admin'@'%'=password('111111');
# 或者
mysql> UPDATE mysql.user SET Password=PASSWORD('111111') WHERE
User='admin' and host='%';
# 或者
mysql> use mysql;
mysql> update user set password=password('123') where user='admin' and host='%';
上面只是修改了密码,但是还没有生效。所以需要刷新授权。
mysql> flush privileges;
vim /etc/my.cnf
# 在文件末尾添加skip-grant-tables,表示跳过密码验证。
mysql -u root -p
Enter password:
# 直接回车就能进入mysql数据库了
下面代码都是修改的本地admin用户的密码。
mysql> set password for 'root'@'localhost'=password('111111');
# 或者
mysql> UPDATE mysql.user SET Password=PASSWORD('111111') WHERE
User='root' and host='localhost';
# 或者
mysql> use mysql;
mysql> update user set password=password('111111') where user='root' and host='localhost';
修改外网用户密码
mysql> set password for 'root'@'%'=password('111111');
# 或者
mysql> UPDATE mysql.user SET Password=PASSWORD('111111') WHERE
User='root' and host='%';
# 或者
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='%';
mysql> flush privileges;
先将配置文件 /etc/my.cnf 中新加的配置注释掉
vim /etc/my.cnf
......
# skip-grant-tables
重启mysql服务
service mysqld start
# 或者
service mysqld restart
show grants for '用户'@'IP地址';
# 例子1
mysql> show grants for 'admin'@'localhost';
# 例子2
mysql> show grants for 'admin'@'%';
# 其实不加引号也可以
mysql> show grants for admin@localhost;
mysql> show grants for admin@%;
mysql> grant 权限 on 数据库.表 to '用户'@'IP地址';
# 例子1
# 授予用户通过外网IP操作testdb数据库中所有表的全部权限
mysql> grant all privileges on testdb.* to 'test'@'%' identified by '123456';
# 例子2
# 授予用户在本地操作testdb数据库中所有表的全部权限
mysql> grant all privileges on testdb.* to 'test'@'localhost' identified by '123456';
#
记得刷新权限
mysql> flush privileges;
# 格式
mysql> revoke 权限 on 数据库.表 from '用户'@'IP地址';
# 例子,删除amdin用户在本地访问mysql时的insert和update权限
mysql> revoke insert, update on csdn.* from 'admin'@'localhost';
记得刷新权限
mysql> flush privileges;
mysql> rename user 'admin'@'localhost' to 'new_admin'@'%';
# 刷新授权
mysql> flush privileges;
# 删除本地用户
mysql> drop user 'admin'@'localhost';
# 删除外网用户
mysql> drop user 'admin'@'%';
# 刷新授权
mysql> flush privileges;
或者
# 删除本地用户
mysql> delete from user Where User='admin' and Host='localhost';
# 删除外网用户
mysql> delete from user Where User='admin' and Host='%';
[1] MySQL添加新用户、为用户创建数据库、为新用户分配权限
[2] mysql修改用户密码的方法及命令
[3] 在MySQL登录时出现Access denied for user ‘root’@‘localhost’ (using password: YES) 拒绝访问,并可修改MySQL密码
[4] 创建mysql新用户,并且赋予权限管理。
[5] MySQL中用户权限、库权限、表权限的控制
[6] mysql添加用户、修改权限,修改登录权限ip
[7] mysql grant 用户权限总结