mysql 登录socket与TCP


对oracle 登录的很清楚

sqlplus /  as sysdba

sqlplus scott/tiger

这种登录方式属于本地登录,不走网络,跟监听没有关系,登录的实例为在环境变量中设置的$ORACLE_SID

sqlplus scott/tiger@orcl

这种登录方式即使在服务器上登录也是通过网络,需要监听配置的。

转向mysql时,好久也没搞明白mysql的登录

今天明白了一点点,先记录一下,后续再补充。

1. socket

socket是用于同一台主机的进程间通讯(IPC),不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另外一个进程,消息既不会丢失也不会顺序错乱。

一般在配置文件中会配置

[root@MySQL56_L1 ~]# more /etc/my.cnf 

[client]
port            = 3306
socket          = /tmp/mysql3306.sock

select user,host,plugin from user where user ='root';
+------+-----------+-----------------------+
| user | host        | plugin |
+------+-----------+-----------------------+
| root | %        | mysql_native_password |
| root | 127.0.0.1 | mysql_native_password |
| root | localhost | caching_sha2_password |
+------+-----------+-----------------------+

原来root 通过-h127.0.0.1登录时使用的是 mysql_native_password, 而默认修改密码使用的插件是caching_sha2_password

所以需要修改密码时加入with mysql_native_password

alter user root@'127.0.0.1' identified with mysql_native_password by 'abc123';