我有从端口安装MySQL,运行和侦听端口3306.在同一台服务器上,我从源码编译的Percona服务器,运行和侦听端口3307。
#mysql processes bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var/db/mysql --pid-file=/var/db/mysql/mysql.pid /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datadir=/var/db/mysql --plugin-dir=/usr/local/lib/mysql/plugin --user=mysql --log-error=/var/db/mysql/mysql.err --pid-file=/var/db/mysql/mysql.pid #percona processes /bin/sh /usr/local/percona/bin/mysqld_safe --defaults-extra-file=/home/percona/my.cnf --user=percona --datadir=/home/percona --pid-file=/home/percona/mysql.pid /usr/local/percona/bin/mysqld --defaults-extra-file=/home/percona/my.cnf --basedir=/usr/local/percona --datadir=/home/percona --plugin-dir=/usr/local/percona/lib/plugin --user=percona --log-error=/home/percona/mysql-error.log --open-files-limit=65535 --pid-file=/home/percona/mysql.pid --socket=/tmp/percona.sock --port=3307
正如你可以看到percona正在运行--socket=/tmp/percona.sock --port=3307 。
当我尝试从本地主机连接Percona时,我正面临着奇怪的情况。
mysql -S /tmp/percona.sock -uroot -p # ok, I'm connected to Percona mysql -P 3307 -uroot -p # NO! I'm connected to MySQL
但是,当我试图从另一台服务器连接到3307 – 我成功连接到Percona(而不是MySQL)
#on another server mysql -P 3307 -h somehost -u root -p # ok, I'm connected to Percona
为什么? 为什么从本地连接到3307会导致正常的MySQL。 但从另一台主机连接到3307导致Percona服务器?
mysql -P 3307 -uroot -p # NO! I'm connected to MySQL mysql -P 3307 -uroot -p # NO! I'm connected to MySQL , – 主机默认是localhost 。 如果是这样,客户端通过unix套接字连接,而不是通过TCP。 因此-P选项没有意义。 但是,如果你像这样连接mysql -P 3307 -uroot -p -h 127.0.0.1它将强制客户端使用TCP,你将会到达Percona。