我正在尝试通过本地网络连接到 mysql 服务器。该服务器正在运行并监听帖子 41322。
dylan~$ netstat -ln | s mysql
unix 2 [ ACC ] STREAM LISTENING 41322 /var/run/mysqld/mysqld.sock
我的用户被授予了来自所有地址的所有权限,并且我可以在本地登录。
dylan~$ mysqladmin -P 41322 -h [email protected] create database test
mysqladmin: connect to server at '[email protected]' failed
error: 'Unknown MySQL server host '[email protected]' (1)'
Check that mysqld is running on [email protected] and that the port is 41322.
You can check this by doing 'telnet [email protected] 41322'
bind-address=127.0.0.1
添加 --verbose 标志不会产生任何额外输出。我在服务器上注释掉了/etc/mysql/my.cnf
。我可以毫无问题地通过 ssh 进入服务器。
dylan~$ ps a | grep mysql
11131 pts/3 S 0:00 /bin/sh /usr/bin/mysqld_safe
11170 pts/3 Sl 0:03 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
11171 pts/3 S 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
13710 pts/1 S+ 0:00 grep mysq
任何帮助或想法都将不胜感激。
答案1
在我看来,您的 mysql 守护进程没有监听 TCP 端口。您的 netstat 输出显示 mysql 正在监听 inode 41322 处的 UNIX 域套接字(文件 /var/run/mysqld/mysqld.sock)。
你没有提到你的操作系统,但我根据你对 netstat 使用的 -l 标志推测你使用的是 Linux。要显示 Linux 上所有正在监听的 TCP 和 UDP 端口以及使用它们的守护进程,请运行netstat -ltunp
一些默认的 MySQL 安装在配置文件中有“skip-networking”,通常是 /etc/my.cnf 或 /etc/mysql/my.cnf。如果存在该选项,请将其注释掉并重新启动守护进程。