在 Ubuntu 上配置 MySQL 监听远程连接

在 Ubuntu 上配置 MySQL 监听远程连接

在我将 MySQL 5.7.20 配置为在 Ubuntu 17.10 Linux 服务器上监听远程连接后,数据库拒绝重新启动。

我编辑了 /etc/mysql/mysql.conf.d/mysqld.cnf 并进行了以下两行更改(绑定 IP 地址被故意隐藏)

# 现在默认不再跳过网络,而是只监听
# localhost 兼容性更强,安全性也更高。
#绑定地址 = 127.0.0.1
绑定地址 = ###.###.###.###
需要安全传输 = 开启

以下错误来自 journalctl -xe:

-- 主题:单元 mysql.service 已完成关闭
-- 定义者:systemd
-- 支持:http://www.ubuntu.com/support
--
——单元mysql.service已完成关闭。
5月01日 14:02:58 xweb02 systemd[1]:正在启动 MySQL 社区服务器...
-- 主题:单元 mysql.service 已开始启动
-- 定义者:systemd
-- 支持:http://www.ubuntu.com/support
--
——单元mysql.service已经开始启动。
5月01日 14:02:58 xweb02 审计[12934]: AVC apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/12934/status" pid=12934 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:02:58 xweb02 审计[12934]: AVC apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/sys/devices/system/node/" pid=12934 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=0
5月01日 14:02:58 xweb02 审计[12934]: AVC apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/12934/status" pid=12934 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:02:58 xweb02 内核:审计:类型=1400 审计(1525197778.760:435):apparmor=“DENIED”操作=“open”配置文件=“/usr/sbin/mysqld”名称=“/proc/12934/status”pid=12934 comm=“mysqld”requested_mask=“r”denied_mask=“r”fsuid=126 ouid=126
5月01日 14:02:58 xweb02 内核:审计:类型=1400 审计(1525197778.761:436):apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/sys/devices/system/node/" pid=12934 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=0
5月01日 14:02:58 xweb02 内核:审计:类型=1400 审计(1525197778.761:437):apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/12934/status" pid=12934 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:03:00 xweb02 systemd[1]: mysql.service: 主进程已退出, code=exited, status=1/FAILURE
5月01日 14:03:28 xweb02 systemd[1]: 无法启动 MySQL 社区服务器。
-- 主题:单元 mysql.service 已失败
-- 定义者:systemd
-- 支持:http://www.ubuntu.com/support
--
-- 单元 mysql.service 已失败。
--
——结果失败了。
5月01日 14:03:28 xweb02 systemd[1]: mysql.service: 单元进入失败状态。
5 月 01 日 14:03:28 xweb02 systemd[1]: mysql.service: 失败,结果为“退出代码”。
5月01日 14:03:28 xweb02 systemd[1]: mysql.service: 服务延迟时间已到,正在计划重新启动。
5月01日 14:03:28 xweb02 systemd[1]:已停止 MySQL 社区服务器。
-- 主题:单元 mysql.service 已完成关闭
-- 定义者:systemd
-- 支持:http://www.ubuntu.com/support
--
——单元mysql.service已完成关闭。
5月01日 14:03:28 xweb02 systemd[1]:正在启动 MySQL 社区服务器...
-- 主题:单元 mysql.service 已开始启动
-- 定义者:systemd
-- 支持:http://www.ubuntu.com/support
--
——单元mysql.service已经开始启动。
5月01日 14:03:29 xweb02 审计[13059]: AVC apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/13059/status" pid=13059 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:03:29 xweb02 审计[13059]: AVC apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/sys/devices/system/node/" pid=13059 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=0
5月01日 14:03:29 xweb02 审计[13059]: AVC apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/13059/status" pid=13059 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:03:29 xweb02 内核:审计:类型=1400 审计(1525197809.010:438):apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/13059/status" pid=13059 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:03:29 xweb02 内核:审计:类型=1400 审计(1525197809.011:439):apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/sys/devices/system/node/" pid=13059 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=0
5月01日 14:03:29 xweb02 内核:审计:类型=1400 审计(1525197809.011:440):apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/13059/status" pid=13059 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:03:30 xweb02 systemd[1]: mysql.service: 主进程已退出, code=exited, status=1/FAILURE
5月01日 14:03:59 xweb02 systemd[1]: 无法启动 MySQL 社区服务器。
-- 主题:单元 mysql.service 已失败
-- 定义者:systemd
-- 支持:http://www.ubuntu.com/support
--
-- 单元 mysql.service 已失败。
--
——结果失败了。
5月01日 14:03:59 xweb02 systemd[1]: mysql.service: 单元进入失败状态。
5 月 01 日 14:03:59 xweb02 systemd[1]: mysql.service: 失败,结果为“退出代码”。
5月01日 14:03:59 xweb02 systemd[1]: mysql.service: 服务延迟时间已到,正在计划重新启动。
5月01日 14:03:59 xweb02 systemd[1]:已停止 MySQL 社区服务器。
-- 主题:单元 mysql.service 已完成关闭
-- 定义者:systemd
-- 支持:http://www.ubuntu.com/support
--
——单元mysql.service已完成关闭。
5月01日 14:03:59 xweb02 systemd[1]:正在启动 MySQL 社区服务器...
-- 主题:单元 mysql.service 已开始启动
-- 定义者:systemd
-- 支持:http://www.ubuntu.com/support
--
——单元mysql.service已经开始启动。
5月01日 14:03:59 xweb02 审计[13182]: AVC apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/13182/status" pid=13182 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:03:59 xweb02 审计[13182]: AVC apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/sys/devices/system/node/" pid=13182 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=0
5月01日 14:03:59 xweb02 审计[13182]: AVC apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/13182/status" pid=13182 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:03:59 xweb02 内核:审计:类型=1400 审计(1525197839.260:441):apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/proc/13182/status" pid=13182 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=126
5月01日 14:03:59 xweb02 内核:审计:类型=1400 审计(1525197839.260:442):apparmor="DENIED" 操作="open" 配置文件="/usr/sbin/mysqld" 名称="/sys/devices/system/node/" pid=13182 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=126 ouid=0
5月1日 14:03:59 xweb02 内核:审计:类型=1400 审计(1525197839.260:443):apparmor=“DENIED”操作=“open”配置文件=“/usr/sbin/mysqld”名称=“/proc/13182/status”pid=13182 comm=“mysqld”requested_mask=“r”denied_mask=“r”fsuid=126 ouid=126
5月01日 14:04:01 xweb02 systemd[1]: mysql.service: 主进程已退出, code=exited, status=1/FAILURE

如果我注释掉我的更改并取消注释第一个地址绑定,那么它就可以起作用:

# 现在默认不再跳过网络,而是只监听
# localhost 兼容性更强,安全性也更高。
绑定地址 = 127.0.0.1
#绑定地址 = ###.###.###.###
#require_secure_transport = on

最后,如果我取消注释第一个 bind-address 和 require_secure_transport,并注释第二个 address-bind,那么它就可以起作用:

# 现在默认不再跳过网络,而是只监听
# localhost 兼容性更强,安全性也更高。
绑定地址 = 127.0.0.1
#绑定地址 = ###.###.###.###
需要安全传输 = 开启

问题似乎出在 bind-address 行上。如能提供任何帮助,我们将不胜感激。

答案1

绑定地址已设置为 MySQL 所在服务器的私有 IP 地址。成功了!

相关内容