MySQL的用户管理和权限管理:
在MySQL中创建更多的用户,不可能都使用root用户。root用户的权限太高,一个误操作,容易造成很大的失误。
注意:MySQL中不能单纯通过用户名来说明用户,必须加上主机,如jack@10.1.1.1
1、语法:
创建用户的时候,直接设置密码。
mysql> create user '用户名'@'被允许连接的主机名称或主机的IP地址' identified by '用户密码';
mysql> select user,host from mysql.user;
2、创建MySQL账号,用户名tom,用户密码:123
- mysql> create user 'tom'@'localhost' identified by '123';
- Query OK, 0 rows affected (0.00 sec)
-
- mysql> select user,host from mysql.user;
- +---------------+-----------+
- | user | host |
- +---------------+-----------+
- | mysql.session | localhost |
- | mysql.sys | localhost |
- | root | localhost |
- | tom | localhost |
- +---------------+-----------+
- 4 rows in set (0.00 sec)
该tom用户只能本地访问。localhost本机访问。
我们通过navicat软件进行登录,发现登录不上,这是因为root账号只能本地登录。
案例:创建一个mysql账号,要求开通远程连接。主机ip地址192.168.17.125,用户名harry,密码:123。
create user 'harry'@'192.168.17.125' identified by '123';
然后在192.168.17.125服务器上进行测试:
- [root@mysql-test ~]# mysql -h 192.168.17.123 -uharry -p
- Enter password:
- Welcome to the MariaDB monitor. Commands end with ; or \g.
- Your MySQL connection id is 3
- Server version: 5.7.43 MySQL Community Server (GPL)
-
- Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
-
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
- MySQL [(none)]>
- MySQL [(none)]>
- MySQL [(none)]> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- +--------------------+
- 1 row in set (0.00 sec)
-
说明:
yum install mysql -y
yum安装mysql:代表安装的是mysql客户端;
yum安装mysql-server:代表安装的mysql-server服务器端;
案例:创建一个MySQL账号(要求开通远程连接),主机IP的网段:10.1.1.0,用户名:jack,用户密码:123
- mysql> create user 'jack'@'192.168.17.%' identified by '123';
- Query OK, 0 rows affected (0.04 sec)
-
- mysql>
- mysql> select host, user from mysql.user;
- +----------------+---------------+
- | host | user |
- +----------------+---------------+
- | 192.168.17.% | jack |
- | 192.168.17.125 | harry |
- | localhost | mysql.session |
- | localhost | mysql.sys |
- | localhost | root |
- | localhost | tom |
- +----------------+---------------+
- 6 rows in set (0.00 sec)
-
-
-
- [root@mysql-test ~]# mysql -h 192.168.17.123 -ujack -p
- Enter password:
- Welcome to the MariaDB monitor. Commands end with ; or \g.
- Your MySQL connection id is 4
- Server version: 5.7.43 MySQL Community Server (GPL)
-
- Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
-
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
- MySQL [(none)]>
- MySQL [(none)]>
- MySQL [(none)]> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- +--------------------+
- 1 row in set (0.00 sec)
案例:创建一个MySQL账号(要求开通远程连接),要求面向所有主机开放,用户名:root,用户密码:123。
- mysql> create user 'root'@'%' identified by '123';
- Query OK, 0 rows affected (0.00 sec)
-
- mysql>
- mysql> select host, user from mysql.user;
- +----------------+---------------+
- | host | user |
- +----------------+---------------+
- | % | root |
- | 192.168.17.% | jack |
- | 192.168.17.125 | harry |
- | localhost | mysql.session |
- | localhost | mysql.sys |
- | localhost | root |
- | localhost | tom |
- +----------------+---------------+
- 7 rows in set (0.00 sec)
-
MySQL里面的账号不能仅仅看账号,也要看IP地址。由这两个决定一个账号。
删除账号:
基本语法:
mysql> drop user '用户名'@'主机名称或主机的IP地址';
特别说明:
如果在删除用户时没有指定主机的名称或主机的IP地址,则默认删除这个账号的所有信息。
案例:删除tom这个账号。
- mysql> drop user 'tom'@'localhost';
- Query OK, 0 rows affected (0.00 sec)
-
- mysql>
- mysql> select host, user from mysql.user;
- +----------------+---------------+
- | host | user |
- +----------------+---------------+
- | % | root |
- | 192.168.17.% | jack |
- | 192.168.17.125 | harry |
- | localhost | mysql.session |
- | localhost | mysql.sys |
- | localhost | root |
- +----------------+---------------+
- 6 rows in set (0.00 sec)
案例:删除jack这个账号。
- mysql> drop user 'jack'@'192.168.17.%';
- Query OK, 0 rows affected (0.00 sec)
-
- mysql>
- mysql> select host, user from mysql.user;
- +----------------+---------------+
- | host | user |
- +----------------+---------------+
- | % | root |
- | 192.168.17.125 | harry |
- | localhost | mysql.session |
- | localhost | mysql.sys |
- | localhost | root |
- +----------------+---------------+
- 5 rows in set (0.00 sec)
扩展:删除MySQL账号的另外一种方式。
- mysql> delete from mysql.user where user='root' and host='%';
- Query OK, 1 row affected (0.00 sec)
-
- mysql> select host, user from mysql.user;
- +----------------+---------------+
- | host | user |
- +----------------+---------------+
- | 192.168.17.125 | harry |
- | localhost | mysql.session |
- | localhost | mysql.sys |
- | localhost | root |
- +----------------+---------------+
- 4 rows in set (0.00 sec)
修改MySQL账号:
特别说明:MySQL用户重命名通常可以更改两部分,一部分是用户的名称,一部分是被允许访问的主机名称或主机的IP地址。
基本语法:
mysql> rename user 旧用户信息 to 新用户信息;
案例:把用户'root'@'%'更改为'root'@'10.1.1.%'。
- mysql> create user 'root'@'%' identified by '123';
- Query OK, 0 rows affected (0.00 sec)
-
- mysql>
- mysql> select host, user from mysql.user;
- +----------------+---------------+
- | host | user |
- +----------------+---------------+
- | % | root |
- | 192.168.17.125 | harry |
- | localhost | mysql.session |
- | localhost | mysql.sys |
- | localhost | root |
- +----------------+---------------+
- 5 rows in set (0.00 sec)
-
-
- mysql> rename user 'root'@'%' to 'root'@'192.168.17.%';
- Query OK, 0 rows affected (0.00 sec)
-
- mysql> select host, user from mysql.user;
- +----------------+---------------+
- | host | user |
- +----------------+---------------+
- | 192.168.17.% | root |
- | 192.168.17.125 | harry |
- | localhost | mysql.session |
- | localhost | mysql.sys |
- | localhost | root |
- +----------------+---------------+
- 5 rows in set (0.00 sec)
-
- mysql> create user 'tom'@'localhost' identified by '123';
- Query OK, 0 rows affected (0.00 sec)
-
- mysql> rename user 'tom'@'localhost' to 'harry'@'localhost';
- Query OK, 0 rows affected (0.00 sec)
-
- mysql>
- mysql> select host, user from mysql.user;
- +----------------+---------------+
- | host | user |
- +----------------+---------------+
- | 192.168.17.% | root |
- | 192.168.17.125 | harry |
- | localhost | harry |
- | localhost | mysql.session |
- | localhost | mysql.sys |
- | localhost | root |
- +----------------+---------------+
- 6 rows in set (0.00 sec)
扩展:使用update语句更新用户信息
- mysql> select host, user from mysql.user;
- +----------------+---------------+
- | host | user |
- +----------------+---------------+
- | 192.168.17.% | root |
- | 192.168.17.125 | harry |
- | localhost | harry |
- | localhost | mysql.session |
- | localhost | mysql.sys |
- | localhost | root |
- +----------------+---------------+
- 6 rows in set (0.00 sec)
-
-
-
- mysql> update mysql.user set user='tom', host='localhost' where user='harry' and host='localhost';
- Query OK, 1 row affected (0.00 sec)
- Rows matched: 1 Changed: 1 Warnings: 0
-
- mysql> flush privileges;
- Query OK, 0 rows affected (0.00 sec)