mysql -h localhost vs -h 127.0.0.1
2016-04-14 08:28
513 查看
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.6.28, for Linux (x86_64) using EditLine wrapper
Connection id: 7033
Current database: mysql
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 10 hours 12 min 30 sec
Threads: 16 Questions: 231173 Slow queries: 0 Opens: 312 Flush tables: 1 Open tables: 305 Queries per second avg: 6.290
--------------
mysql> select user(),current_user();
+----------------+----------------+
| user() | current_user() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)
mysql> status
--------------
mysql Ver 14.14 Distrib 5.6.28, for Linux (x86_64) using EditLine wrapper
Connection id: 3712
Current database: test
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 10 hours 12 min 37 sec
Threads: 16 Questions: 231205 Slow queries: 0 Opens: 312 Flush tables: 1 Open tables: 305 Queries per second avg: 6.290
--------------
mysql> select user(),current_user();
+----------------+----------------+
| user() | current_user() |
+----------------+----------------+
| root@localhost | root@127.0.0.1 |
+----------------+----------------+
1 row in set (0.00 sec)
FYI : mysql reference 5.6
After a successful connection,
USER() function should indicate the connecting client user and host name
CURRENT_USER() should indicate the account whose privileges apply during the session.
如果通过 TCP/IP 方式进来的连接,MYSQL服务器接收到的来源主机是 127.0.0.1;
如果是 UNIX socket 方式,MYSQL服务器接收到的来源主机是 localhost。
如果MYSQL服务器开启了 skip_name_resolve,MYSQL服务器就不会把接收到的 IP 地址转化为域名,所以前者的user就是 root@'127.0.0.1',后者的user就是 root@'localhost'。
如果按照MYSQL的默认配置,skip_name_resovle 是OFF,MYSQL服务器就会将 127.0.0.1 转换为 localhost,那么前者和后者两种连接的 user 都是 root@'localhost'
为什么要这么设计?
本质是为了使用本地更快速的连接 :使用 unix domain socket
1.Differs between Windows and Linux. If you use a unix domain socket it'll be slightly faster than using TCP/IP (because of the less overhead you have).
2.Windows is using TCP/IP as a default, whereas Linux tries to use a Unix Domain Socket if you choose localhost and TCP/IP if you take 127.0.0.1.
skip_name_resolve 缺省是进行域反向解析
mysql> show variables like '%skip%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | OFF |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
skip_name_resolve 参数是否启用只会影响 select user()的结果。即当前会话连接用户,
因为当启用name_resolve 时 mysql 会将127.0.0.1 转化为域名信息
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.6.28, for Linux (x86_64) using EditLine wrapper
Connection id: 14
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 13 sec
Threads: 14 Questions: 96 Slow queries: 0 Opens: 98 Flush tables: 1 Open tables: 91 Queries per second avg: 7.384
--------------
mysql> show variables like '%skip%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | ON |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
mysql> select user(),current_user();
+----------------+----------------+
| user() | current_user() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)
mysql> show variables like '%skip%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | ON |----跳过域名解析
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
skip_name_resolve 对远程连接状态显示的影响:
------- skip_name_resolve 状态 on:
C:\Users\hlj>mysql -h 10.80.18.237 -uroot -p
Enter password: *****
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.6.24, for Win64 (x86_64)
Connection id: 23
Current database:
Current user: root@10.80.7.161
SSL: Not in use
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 10.80.18.237 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 6 min 48 sec
Threads: 15 Questions: 1272 Slow queries: 0 Opens: 98 Flush tables: 1 Open tables: 91 Queries per second avg: 3.117
--------------
mysql> select user(),current_user();
+------------------+----------------+
| user() | current_user() |
+------------------+----------------+
| root@10.80.7.161 | root@% |
+------------------+----------------+
1 row in set (0.00 sec)
---- skip_name_resolve 状态 OFF
C:\Users\hlj>mysql -h 10.80.18.237 -uroot -p
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.6.24, for Win64 (x86_64)
Connection id: 6
Current database:
Current user: root@10.80.7.161
SSL: Not in use
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 10.80.18.237 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 11 sec
Threads: 10 Questions: 51 Slow queries: 0 Opens: 74 Flush tables: 1 Open tables: 67 Queries per second avg: 4.636
--------------
mysql> select user(),current_user();
+------------------+----------------+
| user() | current_user() |
+------------------+----------------+
| root@10.80.7.161 | root@% |
+------------------+----------------+
1 row in set (0.00 sec)
mysql> show variables like '%skip%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | OFF |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
进行name_resolve 时 ,无非就是在 mysql 的error log中记录一条warning 信息:
/var/lib/mysql/centos7.err
2016-04-13 20:45:44 12730 [Warning] IP address '10.80.7.161' could not be resolved: Name or service not known
一般建议设置skip_name_resolve =on ,不进行反向解析。可以节省一定的mysql系统资源
--------------
mysql Ver 14.14 Distrib 5.6.28, for Linux (x86_64) using EditLine wrapper
Connection id: 7033
Current database: mysql
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 10 hours 12 min 30 sec
Threads: 16 Questions: 231173 Slow queries: 0 Opens: 312 Flush tables: 1 Open tables: 305 Queries per second avg: 6.290
--------------
mysql> select user(),current_user();
+----------------+----------------+
| user() | current_user() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)
mysql> status
--------------
mysql Ver 14.14 Distrib 5.6.28, for Linux (x86_64) using EditLine wrapper
Connection id: 3712
Current database: test
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 10 hours 12 min 37 sec
Threads: 16 Questions: 231205 Slow queries: 0 Opens: 312 Flush tables: 1 Open tables: 305 Queries per second avg: 6.290
--------------
mysql> select user(),current_user();
+----------------+----------------+
| user() | current_user() |
+----------------+----------------+
| root@localhost | root@127.0.0.1 |
+----------------+----------------+
1 row in set (0.00 sec)
FYI : mysql reference 5.6
After a successful connection,
USER() function should indicate the connecting client user and host name
CURRENT_USER() should indicate the account whose privileges apply during the session.
如果通过 TCP/IP 方式进来的连接,MYSQL服务器接收到的来源主机是 127.0.0.1;
如果是 UNIX socket 方式,MYSQL服务器接收到的来源主机是 localhost。
如果MYSQL服务器开启了 skip_name_resolve,MYSQL服务器就不会把接收到的 IP 地址转化为域名,所以前者的user就是 root@'127.0.0.1',后者的user就是 root@'localhost'。
如果按照MYSQL的默认配置,skip_name_resovle 是OFF,MYSQL服务器就会将 127.0.0.1 转换为 localhost,那么前者和后者两种连接的 user 都是 root@'localhost'
为什么要这么设计?
本质是为了使用本地更快速的连接 :使用 unix domain socket
1.Differs between Windows and Linux. If you use a unix domain socket it'll be slightly faster than using TCP/IP (because of the less overhead you have).
2.Windows is using TCP/IP as a default, whereas Linux tries to use a Unix Domain Socket if you choose localhost and TCP/IP if you take 127.0.0.1.
skip_name_resolve 缺省是进行域反向解析
mysql> show variables like '%skip%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | OFF |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
skip_name_resolve 参数是否启用只会影响 select user()的结果。即当前会话连接用户,
因为当启用name_resolve 时 mysql 会将127.0.0.1 转化为域名信息
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.6.28, for Linux (x86_64) using EditLine wrapper
Connection id: 14
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 13 sec
Threads: 14 Questions: 96 Slow queries: 0 Opens: 98 Flush tables: 1 Open tables: 91 Queries per second avg: 7.384
--------------
mysql> show variables like '%skip%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | ON |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
mysql> select user(),current_user();
+----------------+----------------+
| user() | current_user() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+
1 row in set (0.00 sec)
mysql> show variables like '%skip%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | ON |----跳过域名解析
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
skip_name_resolve 对远程连接状态显示的影响:
------- skip_name_resolve 状态 on:
C:\Users\hlj>mysql -h 10.80.18.237 -uroot -p
Enter password: *****
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.6.24, for Win64 (x86_64)
Connection id: 23
Current database:
Current user: root@10.80.7.161
SSL: Not in use
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 10.80.18.237 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 6 min 48 sec
Threads: 15 Questions: 1272 Slow queries: 0 Opens: 98 Flush tables: 1 Open tables: 91 Queries per second avg: 3.117
--------------
mysql> select user(),current_user();
+------------------+----------------+
| user() | current_user() |
+------------------+----------------+
| root@10.80.7.161 | root@% |
+------------------+----------------+
1 row in set (0.00 sec)
---- skip_name_resolve 状态 OFF
C:\Users\hlj>mysql -h 10.80.18.237 -uroot -p
mysql> status;
--------------
mysql Ver 14.14 Distrib 5.6.24, for Win64 (x86_64)
Connection id: 6
Current database:
Current user: root@10.80.7.161
SSL: Not in use
Using delimiter: ;
Server version: 5.6.28-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 10.80.18.237 via TCP/IP
Server characterset: latin1
Db characterset: latin1
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 11 sec
Threads: 10 Questions: 51 Slow queries: 0 Opens: 74 Flush tables: 1 Open tables: 67 Queries per second avg: 4.636
--------------
mysql> select user(),current_user();
+------------------+----------------+
| user() | current_user() |
+------------------+----------------+
| root@10.80.7.161 | root@% |
+------------------+----------------+
1 row in set (0.00 sec)
mysql> show variables like '%skip%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| skip_external_locking | ON |
| skip_name_resolve | OFF |
| skip_networking | OFF |
| skip_show_database | OFF |
| slave_skip_errors | OFF |
| sql_slave_skip_counter | 0 |
+------------------------+-------+
6 rows in set (0.00 sec)
进行name_resolve 时 ,无非就是在 mysql 的error log中记录一条warning 信息:
/var/lib/mysql/centos7.err
2016-04-13 20:45:44 12730 [Warning] IP address '10.80.7.161' could not be resolved: Name or service not known
一般建议设置skip_name_resolve =on ,不进行反向解析。可以节省一定的mysql系统资源
相关文章推荐
- mysql之基础操作grant、show、repair、log_error等
- MySQL大小写补坑记
- MySQL-MHA搭建
- MySQL乱码问题
- 详解JSP中的语句对象Statement操作MySQL的使用实例
- JSP程序使用JDBC连接MySQL的教程
- 浅谈mysql innodb myiasm 引擎
- MySQL入门教程(五)之表的创建、修改和删除
- MySQL入门教程(七)之视图
- mysql登录报错提示:ERROR 1045 (28000)的解决方法
- Windows下MySQL 5.6安装及配置详细图解(大图版)
- mysql join用法分析
- PostgreSQL事务处理机制 (&与MySQL之间比较)
- mysql 连接字符串与SQL不同
- MySQL之alter语句用法总结
- mysql 查询理解
- Windows下安装MySQL5.7
- Windows下MySQL5.6以上版本不能用localhost和127.0.0.1连接问题
- 重设mysql数据库root用户密码
- mysql之触发器trigger