MySql用户以及权限的管理。

时间:2022-09-22 08:28:23

1.创建用户

CREATE USER “USERNAME“@“%” IDENTIFIED BY “PASSWORD”

   这样一个用户就新建完成了。

   CREATE USER ------创建用户后面跟上想要创建的用户名。

   @% ------%表示主机,如果是%表示任何主机都可,但是想限制IP那么就写IP。例如:我想让只想1.1.1.1这个能够访问数据库那么就这样

CREATE USER “USERNAME“@“1.1.1.1” IDENTIFIED BY “PASSWORD”;

 但是有个问题本萌新想问一下:就算我写的是%号,但是我用本机当做服务器的话,我新建的普通用户,还是无法登陆,除非我在user表中INSERT一条localhost进去才行,不知道这个是为什么啊?

2.给用户添加权限

  我们新建一个普通用户后,虽然有这个账户了,但是没有权限了访问不了数据库。所以我们需要给他分配权限。

grant all privileges on *.* to 'USERNAME'@'%' identified by '账户的密码’

 all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等。
 on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
 to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”yangxin”@”192.168.0.%”,表示yangxin这个用户只能在192.168.0IP段登录
 identified by:指定用户的登录密码

对用户做了权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库。

mysql> flush privileges;

3.查看用户权限

  查询某用户有哪些权限。注意后面的主机的名的不同,它所具备的权限也不是不同的。

SHOW GRANTS FOR "USERNAME"@"%";

4.回收/删除用户的某些权限

revoke create on *.* from 'USERNAME@localhost';

 那么这条命令下去,该用户就不能创建任何数据库和表了。记得用第2项中的flush命令刷新一下权限。

5.删除用户

drop user 'USERNAME'@'%'; 

6.修改用户密码三种方法

6.1.更新mysql.user表  
# mysql5.7之前
mysql> use mysql;
mysql> update user set password=password('123456') where user='root';

# mysql5.7之后
mysql> use mysql;
mysql> update user set authentication_string=password('123456') where user='root';
mysql> flush privileges;

 6.2.set password for ‘用户名'@'登录地址'=password(‘密码')

mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit'); 

6.3.mysqladmin -u 用户名 -p旧的密码 password 新密码

 

$ mysqladmin -u root -p123456 password 1234abcd

 

注意我的提示符已经转变成shell了,注意-p后面是没有空格的。 

7.如果忘记了root密码,如何修改root的密码呢?且看下面

由于进行特殊模式进行登录,当前的一个shell会陷入黑洞中,所以建议多开一个ssh连接,用来做2、3步操作,
1.在操作系统中停止mysql服务进程  RHEL7以下:service mysqld stop
  RHEL
7:systemctl stop mysql.service
2.使用下面命令跳过权限验证,也就不需要密码了。
  mysqld_safe --skip-grant-tables
3.修改root密码
  mysql> use mysql
  Database changed
  mysql> UPDATE user SET password=PASSWORD("Qwe123") WHERE user='root';
  Query OK, 4 rows affected (0.01 sec)
  Rows matched: 4 Changed: 4 Warnings: 0
  mysql> flush privileges;
  Query OK, 0 rows affected (0.00 sec)
  最后干掉当前特殊模式下的mysql进程 重启一下服务,那么grant验证就又回来了。

 

如果错误恳请各位指出,谢谢!

相关链接: http://www.jb51.net/article/69761.htm   http://www.jb51.net/article/87979.htm