【问题标题】:MySQL server restart error when setting bind-address设置绑定地址时 MySQL 服务器重启错误
【发布时间】:2017-12-07 05:52:09
【问题描述】:

我正在按照本教程在我的 Digital Ocean droplet 上设置 MySQL 服务器,但使用的是 Ubuntu 16.04。

https://www.digitalocean.com/community/tutorials/how-to-migrate-a-mysql-database-to-a-new-server-on-ubuntu-14-04

当我将 'bind-address' 设置为 localhost 或公共服务器的 ip 时,我可以重新启动服务器,但是当我尝试使用私有 ip 时,我得到一个错误。

$ sudo service mysql restart

投掷:

Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.

systemctl status mysql.service

● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: activating (start-post) (Result: exit-code) since Mon 2017-07-03 23:23:36 UTC; 10s ago
  Process: 16717 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
  Process: 16709 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 16717 (code=exited, status=1/FAILURE);         : 16718 (mysql-systemd-s)
    Tasks: 2
   Memory: 332.0K
      CPU: 338ms
   CGroup: /system.slice/mysql.service
           └─control
             ├─16718 /bin/bash /usr/share/mysql/mysql-systemd-start post
             └─16768 sleep 1

Jul 03 23:23:36 inradar-db-production systemd[1]: Starting MySQL Community Server...
Jul 03 23:23:38 inradar-db-production systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE

journalctl -xe(最后几行)

Jul 03 23:24:37 inradar-db-production audit[16926]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/16926/status" pid=169
Jul 03 23:24:37 inradar-db-production audit[16926]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" 
Jul 03 23:24:37 inradar-db-production kernel: audit: type=1400 audit(1499124277.901:460): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld"
Jul 03 23:24:37 inradar-db-production kernel: audit: type=1400 audit(1499124277.901:461): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld"
Jul 03 23:24:37 inradar-db-production audit[16926]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/16926/status" pid=169
Jul 03 23:24:37 inradar-db-production kernel: audit: type=1400 audit(1499124277.905:462): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld"
Jul 03 23:24:39 inradar-db-production systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
lines 2193-2214/2214 (END)

有什么问题?

【问题讨论】:

  • 您必须首先检查:有关详细信息,请参阅“systemctl status mysql.service”和“journalctl -xe”。有哪些细节?也许一些有用的错误细节
  • 我已经更新了描述
  • 我在该网址上找不到解决方案。他们看起来和我一样迷茫。您是否注意到任何相关建议?
  • 我不确定,但这似乎是解决方案:“GET_AROUND: sudo nano /etc/apparmor.d/usr.sbin.mysqld line 25 after: # Allow config access /etc/mysql/ ** r, -add line: /etc/mysql/* r, systemctl restart apparmor.service service mysql stop service mysql start - 问题消失”

标签: mysql ubuntu-16.04 digital-ocean


【解决方案1】:

我也有这个问题。您究竟在 my.cnf 文件中添加了什么?

安装时,我的 my.cnf 文件完全为空。当我只添加绑定地址行时,我得到了和你一样的错误。

但是,当我在上面添加 [mysqld] 时,它可以工作...所以尝试添加:

[mysqld]
bind-address = 0.0.0.0

一些附加信息:当我检查我的日志时,我可以看到这些错误日志,这似乎表明 mysql 正在 my.conf 文件中寻找额外的东西:

Aug 03 13:22:03 ubuntu mysql-systemd-start[19667]: my_print_defaults: [ERROR] Found option without preceding group in config file /etc/mysql/my.cnf at line 23!
Aug 03 13:22:03 ubuntu mysql-systemd-start[19667]: my_print_defaults: [ERROR] Fatal error in defaults handling. Program aborted!

我现在可以远程连接到我的数据库了。

希望这会有所帮助!

【讨论】:

  • 为什么它不能使用公共 ip 但使用 0.0.0.0 的任何原因?
【解决方案2】:

sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

https://www.cyberciti.biz/faq/ubuntu-linux-howto-disable-apparmor-commands/

【讨论】:

  • 完全禁用 apparmor 不是解决方案,而且很危险
  • 如果在开发人员机器上使用 MySQL,这不是问题
猜你喜欢
  • 2011-04-02
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多