linux 服务器上登录 mysql,常用方式主要有两类:
- unix socket 本地登录
- tcp/ip 登录
如果 mysql 使用非默认端口或非默认 socket,直接执行 mysql -uroot -p 可能会连接失败。本文整理常见登录方式及快速排查方法。
一、本地 socket 登录
最常见的方式:
mysql -uroot -p
这种方式默认通过 unix socket 连接本机 mysql。
如果 mysql 使用的是自定义 socket,需要明确指定:
mysql -uroot -p --socket=/app/data/mysql/13310/run/mysql.sock
如何查找实际 socket
首先查看 mysqld 进程:
ps -ef | grep mysqld | grep -v grep
如果启动参数中直接看到:
--socket=/app/data/mysql/13310/run/mysql.sock
那么这个就是实际 socket。
如果没有 --socket,但看到:
--defaults-file=/app/mysql/conf/my.cnf
说明相关参数可能写在配置文件中,继续查询:
grep -n "socket" /app/mysql/conf/my.cnf
如果仍然找不到,可以从系统层面查:
find /app -type s -name "*.sock" 2>/dev/null
或者:
ss -xl | grep mysql
排查思路可以记成:
ps 查看 mysqld
↓
找 --socket
↓
没有则找 --defaults-file
↓
查看 my.cnf
↓
仍没有则 find / ss二、本机 tcp 登录
如果不想使用 socket,也可以直接走 tcp:
mysql -uroot -p -h127.0.0.1 -p13310
其中:
-h127.0.0.1 数据库地址 -p13310 mysql端口
需要特别注意:
mysql -uroot -p -p13310
不代表一定通过 tcp 连接。
如果没有指定 -h,linux 下 mysql 客户端通常仍会尝试通过 socket 连接。
例如可能报:
error 2002 (hy000): can't connect to local mysql server through socket '/tmp/mysql.sock'
因此,如果明确想走 tcp,建议写完整:
mysql -uroot -p -h127.0.0.1 -p13310
三、远程 tcp 登录
从其他服务器连接 mysql:
mysql -u用户名 -p -h数据库ip -p端口
例如:
mysql -dbuser -p -h10.1.10.20 -p13310
连接前可以先测试网络端口:
nc -vz 10.1.10.20 13310
远程连接需要同时满足:
网络可达 + mysql端口正常监听 + 防火墙允许访问 + 数据库账号允许对应host登录
四、通过配置文件免密登录
linux 数据库服务器上也经常使用:
/root/.my.cnf
例如:
[client] user=root password="******" socket=/app/mysql/run/mysql.sock
建议权限:
chmod 600 /root/.my.cnf
配置完成后可以直接:
mysql
这种方式比较适合:
备份脚本 巡检脚本 定时任务
不需要把密码直接写在命令行中。
五、登录后确认数据库实际配置
登录成功后,可以快速查看:
show variables like 'socket'; show variables like 'port'; show variables like 'datadir';
也可以一次查看主要信息:
show variables like 'socket'; show variables like 'port'; show variables like 'datadir';
如果是 mysql 从库:
show replica status\g
重点关注:
source_host source_port replica_io_running replica_sql_running seconds_behind_source last_io_error last_sql_error
六、常用命令速查
默认本地登录
mysql -uroot -p
指定 socket
mysql -uroot -p --socket=/实际路径/mysql.sock
本机 tcp
mysql -uroot -p -h127.0.0.1 -p13310
远程 tcp
mysql -u用户 -p -h数据库ip -p端口
查看 mysql 启动参数
ps -ef | grep mysqld | grep -v grep
查找 socket
find /app -type s -name "*.sock" 2>/dev/null
查看监听端口
ss -lntp | grep mysqld
总结
linux 登录 mysql 主要就是两种方式:
socket 或 tcp/ip
如果直接:
mysql -uroot -p
提示找不到 /tmp/mysql.sock,不要首先怀疑密码,而应该检查 mysql 实际使用的 socket。
最实用的排查顺序是:
ps 查看 mysqld → 找 socket / defaults-file → 确认实际 socket 或端口 → 选择 socket 或 tcp 登录
其中最容易混淆的一点是:
只写 -p端口 并不会强制 mysql 使用 tcp;明确走 tcp 时,应使用 -h127.0.0.1 -p端口。
以上就是linux下mysql常用登录方式及socket排查指南的详细内容,更多关于mysql登录方式及socket排查的资料请关注代码网其它相关文章!
发表评论