新的 MySQL user% 包是否包含 localhost?
正常解释
% 表示任何客户端都可以连接
localhost 表示只能本地连接
V 一般,那些访问本地数据库的人添加了通常被拒绝的权限。当其他电脑访问本地mysql端口时,如果启用的话,必须在访问前添加指定的IP,以保证数据库无法被远程访问。 ? 2 两种连接方式
这两种连接方式与执行mysql命令时-h参数是localhost还是IP有关。两种连接方式的区别如下
-h参数为localhost
当-h参数为localhost时,实际使用的是socket连接(默认连接方式)。示例如下
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost
输入密码:
========= 跳过==== =======
mysql> status
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21,适用于 linux-glibc2.12 (x86_Liidne) 使用容器包装器:9
当前数据库:
当前用户:test_user@localhost
SSL:未使用
当前使用寻呼机:stdoute:;' outlimit
服务器版本:5.7.21-log MySQL Community Server (GPL)
协议版本:10
连接:通过 UNIX 套接字的本地主机
从当前用户中,可以看到用户是 xx @localhost,连接方式是通过UNIX套接字的Localhost
-h参数是IP
当-h参数是IP时,实际使用TCP连接。示例如下
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1
输入密码:
========= 省略===========
mysql>状态
--------------
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21,对于 linux-glibc2.12 (x86_64),使用 EditLine 包装器
连接 ID:11
当前数据库:
当前用户:test_0pher..012 是 DHE -RSA-AES256-SHA
当前分页器:stdout
输出文件用法:''
分隔符用法:;
服务器版本:5.7.21-log MySQL 社区协议:10
连接:127.0.0.1 通过 TCP/IP
服务器字符集:utf8
从当前用户可以看出,用户是xx@127.0.0.1,连接方式是TCP/IP 3个不同版本的区别
测试方法是是否可以连接。如果不想看测试过程,可以跳到最后看结论
3.1 MySQL 8.0
创建用户
mysql> 选择版本();
+-----------+
|版本() |
+---------+
| 8.0.11 |
+---------+
集合中的 1 行(0.00 秒)
mysql> 创建用户 test_user@'%',由 'test_user' 标识;
查询正常,0行受影响(0.07s)
使用localhost登录
[root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysqerl -p hlocalhost
输入密码:
欢迎使用 MySQL 监控。命令以 ; 结尾或 \g.
您的 MySQL 连接 ID 为 9
服务器版本:8.0.11 MySQL 社区服务器 - GPL
== ======= 已跳过 ========= =
mysql> status
--------------
/usr/local/ mysql80/bin/mysql Ver 8.0.11 for linux-glibc2.12 (MySQL on x86_12社区服务器 - GPL)
连接 ID:9
当前数据库:
当前用户:test_user@localhost
SSL:未使用est :''
分隔符用法:;
版本服务器:8.0.11 MySQL 社区服务器 - GPL
协议版本:10
连接化:通过 UNIX 套接字的本地主机
...
使用 IP 登录 [root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -h127.0.0.1
输入密码:
欢迎使用 MySQL 监视器。命令以 ; 结尾或 \g.
您的 MySQL 连接 ID 为 8
服务器版本:8.0.11 MySQL 社区服务器 - GPL
== ======= 已跳过 ========= =
mysql> status
--------------
/usr/local/ mysql80/bin/mysql Ver 8.0.11 for linux-glibc2.12 (MySQL on x86_12社区服务器 - GPL)
连接 ID:8
当前数据库:
当前用户:test_user@127.0.0.1A SSL:使用 DHE-5-AES1-RS 密码 当前寻呼机:stdout
输出文件用法:''
分隔符用法:;
服务器版本:8.0.11 MySQL 社区服务器 - GPL – GPL 协议版本:1 TCP2 70..❀♻ 1 TCP 70. /IP
结果显示版本 8.0 MySQL,% 包括 localhost
3.2 MySQL 5.7
创建%用户
db83-3306>>创建用户test_user@'%'identified by 'test_user';
查询OK,0行受影响(0.00s)
使用localhost登录
[mysql-8mys ~ ] $ /usr /local/mysql57/bin/mysql -utest_user -p -hlocalhost
=========省略==========
mysql> status /usr/local/ mysql57/bin/mysql Ver 14.14 Distrib 5.7.21,适用于 linux-glibc2.12 (x86_64),使用 EditLine 包装器
当前用户:连接 ID:9当前用户:※ test_user@localhost
SSL:否使用
当前分页器:stdout
使用的输出文件:''
使用的分隔符:;
MySQL 社区(MySQL 服务器版本 2) 协议版本:10
连接:通过 UNIX 套接字的本地主机
....
使用IP登录
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1
输入密码:
========= 省略===========
mysql>状态
--------------
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21,对于 linux-glibc2.12 (x86_64),使用 EditLine 包装器
连接 ID:11
当前数据库:
当前用户:test_0pher..012 是 DHE -RSA-AES256-SHA
当前分页器:stdout
输出文件用法:''
分隔符用法:;
服务器版本:5.7.21-log MySQL 社区协议:10
连接:127.0.0.1 通过 TCP/IP
服务器字符集:utf8
...
结果显示版本 5.7 MySQL,% 3.6‼ MySQL,%3.6‼。 创建用户
db83-3306>>选择版本();
+------------+
|版本() |
+------------ -+
| 5.6.10-log |
+------------+
1 行 in set (0.00s)
db83-3306>>创建用户 test_user@'%' 已识别by 'test_user';
查询OK,0行受影响(0.00s)
使用localhost登录
[mysql@mysql-test-83 ~]$ /usr/local/ bin/mysql57 -utest_user - p -hlocalhost
输入密码:
错误1045(28000):用户'test_user'@'localhost'访问被拒绝(使用密码:YES)使用IP登录[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1
输入密码:
欢迎使用 MySQL Monitor。命令以 ; 结尾或 \g.
您的 MySQL 连接 ID 为 3
服务器版本:5.6.10-log MySQL 社区服务器 (GPL)
======== 省略 ====== == ===
mysql>状态
--------------
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, glibc2.12 ( x86_64) 使用 EditLine 包装器
连接 ID:3
当前数据库:
当前用户:test_user@127.0.0.1❙›› 不是:stdout
输出文件用法:''
分隔符呃用法: ;
服务器版本:5.6.10-log MySQL Community Server (GPL)
协议版本:10
TCP/IP 连接:1 TCP..1 ......
--------------
结果显示 MySQL 5.6(除了 localhost)的 %
3.4 MySQL 5.1 再次mysql> 选择版本();
+-----------+
|版本() |
+---------+
| 5.1.73 |
+------------+
集合中的 1 行(0.00 秒)
mysql> 创建用户 test_user@'%',由 'test_user' 标识;
查询正常,受影响0行(0.00秒)
使用localhost登录
[root@ Chengqm ~]# mysql -utest_user -p
输入密码:输入密码:♝040 E4※ 801 : 拒绝访问对于用户 'test_user'@'localhost' (使用密码:YES)
使用 IP 登录
[root@ Chengqm ~]# mysql -utest_user -p -h127.0.0.1 输入密码:
欢迎使用 MySQL 监视器。命令以 ; 结尾或 \g.
您的 MySQL 连接 ID 为 4901339
服务器版本:5.1.73 源分发
========= 跳过===========
--------------
mysql Ver 14.14 Distrib 5.1.73,适用于 redhat-linux-gnu (x86_64),使用 readline 5.1 4901339
当前数据库:
当前用户:test_user@127.0.0.1
SSL:未使用
当前使用的寻呼机:stdout : ''
分隔符用法: ;
服务器版本: 5.1.73 源分发
协议版本: 10 连接: 127.0.1 结果显示通过 TCP/IP 版本不 % 包括本地主机
3.5 MariaDB 10.3
创建用户db83-3306>>选择版本();
+---------------- -+
|版本() |
+--------------------+
| 10.3.11-MariaDB-log |
+- --------------------+
1 行(0.000s)
db83- 3306>>创建用户test_user@'%',由'test_user'标识;
查询正常,0行受影响(0.001s)
使用localhost登录
[mysql-83 ~l-] $ /usr /local/mariadb/bin/mysql -utest_user -p -hlocalhost
输入密码:
错误 1045 (28000):用户 'test_user'@'localhost' 的访问被拒绝(使用密码:YES) 使用 IP
登录[mysql@mysql-test-83 ~]$ /usr/local/mariadb/bin/mysql -utest_user -p -h127.0.0.1
输入密码:
欢迎使用 MariaDB 监视器。命令以 ; 结尾或 \g.
您的 MariaDB 连接 ID 为 12
服务器版本:10.3.11-MariaDB-log MariaDB 服务器
========= 已跳过 ========= ===
MariaDB [(无)]>状态
--------------
/usr/local/mariadb/bin/mysql Ver 15.1 Distrib 10.3.11 MariaDB,适用于 Linux (x86_64),使用 readline 5.1
连接 ID:12
当前数据库:
当前用户:test_user@127.0.0.1❙››,位于 Sr Not※ 页面:stdout
输出文件用法:''
分隔符用法:;
服务器:MariaDB
服务器版本:10.3.11-MariaDB-log MariaDB 连接版本❙❙❀ 1:1 MariaDB 服务器版本 27.0.0 .1 通过 TCP /IP
结果显示 % MariaDB 10.3 不包含 localhost
4 结论
版本 | % 的用户不包含 localhostMySQL'80.‿ |
---|---|
MySQL5。 7 | 包含 |
MySQL5.6 | 排除 |
MySQL5.1 | 排除 |
❙c❀排除❙❀MariaDB 10.3 |
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。