我正在尝试通过 SSH 隧道在 MySQL 服务器上设置复制。我在从服务器上设置了端口转发,从 localhost 的端口 7777 到主服务器上的端口 3306,我可以使用以下命令连接到我的复制帐户
mysql -h 127.0.0.1 -P 7777 -u replicate -p
但是,当我在从服务器上设置主服务器配置时(使用主机 127.0.0.1、用户复制、正确的密码 [仔细检查] 和端口 7777),它在连接到主服务器时出现错误,代码为 2003,这似乎与登录问题有关。我检查了权限,并且 'replicate'@'127.0.0.1' 在 *.* 上有复制从服务器。为什么我可以连接到客户端,但复制失败了。
编辑:
主服务器在 Ubuntu 10.04 上运行 MySQL 5.1.66;从服务器在 Fedora 16 上运行 MySQL 5.5.28。
mysql --ssl --help
结果是:
Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- -----------------------------
auto-rehash TRUE
character-sets-dir (No default value)
column-type-info FALSE
comments FALSE
compress FALSE
debug-check FALSE
debug-info FALSE
database (No default value)
default-character-set latin1
delimiter ;
vertical FALSE
force FALSE
named-commands FALSE
ignore-spaces FALSE
local-infile FALSE
no-beep FALSE
host (No default value)
html FALSE
xml FALSE
line-numbers TRUE
unbuffered FALSE
column-names TRUE
sigint-ignore FALSE
port 3306
prompt mysql>
quick FALSE
raw FALSE
reconnect TRUE
socket /var/run/mysqld/mysqld.sock
ssl TRUE
ssl-ca (No default value)
ssl-capath (No default value)
ssl-cert (No default value)
ssl-cipher (No default value)
ssl-key (No default value)
ssl-verify-server-cert FALSE
table FALSE
user (No default value)
safe-updates FALSE
i-am-a-dummy FALSE
connect_timeout 0
max_allowed_packet 16777216
net_buffer_length 16384
select_limit 1000
max_join_size 1000000
secure-auth FALSE
show-warnings FALSE
从属状态:
mysql> show slave status\G
--------------
show slave status
--------------
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 127.0.0.1
Master_User: replicate
Master_Port: 7777
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 397
Relay_Log_File: slave-relay-bin.000004
Relay_Log_Pos: 107
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 107
Relay_Log_Space: 107
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 2003
Last_IO_Error: error connecting to master '[email protected]:7777' - retry-time: 60 retries: 86400
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
1 row in set (0.00 sec)
编辑:
SELinux 在服务器上已启用,并且处于强制模式。
答案1
很可能您的 mysqld 与 7777 端口的连接已被 selinux 阻止。要允许这种情况,请执行以下操作
semanage port -a -t mysqld_port_t -p tcp 7777
检查是否已添加到 mysqld 允许端口
semanage port -l | grep mysqld_port_t