![MySQL 更新后无法启动](https://linux22.com/image/709775/MySQL%20%E6%9B%B4%E6%96%B0%E5%90%8E%E6%97%A0%E6%B3%95%E5%90%AF%E5%8A%A8.png)
我刚刚完成了 Debian 到 Stretch 的升级,结果我们的邮件服务器出现了问题(postfix/courier/saslauthd/mysql - 没有进行任何身份验证)。结果,我做了禁止的事情,并重新启动了服务器。现在,我无法让 MySQL 重新启动。systemd 错误非常模糊,令人恼火,没有太多可搜索的内容。这是我得到的全部信息:
$ sudo service mysql status
● mysql.service - LSB: Start and stop the mysql database server daemon
Loaded: loaded (/etc/init.d/mysql; generated; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2017-08-29 19:13:26 UTC; 2min 49s ago
Docs: man:systemd-sysv-generator(8)
Process: 18202 ExecStop=/etc/init.d/mysql stop (code=exited, status=0/SUCCESS)
Process: 19651 ExecStart=/etc/init.d/mysql start (code=exited, status=1/FAILURE)
Aug 29 19:12:55 server.name.tld systemd[1]: Starting LSB: Start and stop the mysql database server daemon...
Aug 29 19:12:55 server.name.tld su[19677]: Successful su for mysql by root
Aug 29 19:12:55 server.name.tld su[19677]: + ??? root:mysql
Aug 29 19:12:55 server.name.tld su[19677]: pam_unix(su:session): session opened for user mysql by (uid=0)
Aug 29 19:13:26 server.name.tld /etc/init.d/mysql[19977]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
Aug 29 19:13:26 server.name.tld mysql[19651]: Starting MySQL database server: mysqld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . failed!
Aug 29 19:13:26 server.name.tld systemd[1]: mysql.service: Control process exited, code=exited status=1
Aug 29 19:13:26 server.name.tld systemd[1]: Failed to start LSB: Start and stop the mysql database server daemon.
Aug 29 19:13:26 server.name.tld systemd[1]: mysql.service: Unit entered failed state.
Aug 29 19:13:26 server.name.tld systemd[1]: mysql.service: Failed with result 'exit-code'.
syslog 唯一的缺点是 mysqladmin 无法连接到套接字。这是因为 MySQL 实际上并没有启动。
我已检查以确保它可以写入 /var/run/mysqld 以及相应的日志目录。MySQ:日志实际上没有任何帮助;自从我重新启动时出现关机消息以来,没有任何东西写入其中任何一个。我还仔细检查了 /etc/mysql/my.cnf 中的目录条目是否都在它们应该在的位置。我还更新了 myisam-recover-options 和 key_buffer_size 变量名称,使其与旧版本不同。
我可以使用 手动启动 mysql sudo mysqld
,进程将运行,套接字文件将显示在正确的位置,但实际上什么也没有发生。我在控制台中得到的信息是:
2017-08-29 19:35:03 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-08-29 19:35:03 0 [Warning] Insecure configuration for --secure-file-priv: Data directory is accessible through --secure-file-priv. Consider choosing a different directory.
2017-08-29 19:35:03 0 [Note] mysqld (mysqld 5.6.36-1~dotdeb+7.1-log) starting as process 24760 ...
编辑前:最终(大约 5 分钟后)它返回到命令提示符并运行 MySQL,但似乎没有停留正在运行。过了一会儿,我回来发现它只是......停止了。MySQL 日志仍然没有显示任何内容,在系统日志中找不到任何相关信息。我放弃了,备份了数据库并重新安装了 MySQL(只是实际的服务器包,而不是 -common,因为它会删除一堆我不想冒险的包)。重新安装后......它和以前完全一样。
不幸的是,即使 MySQL 暂时运行,saslauthd 仍然不会针对 postfix/courier 的数据库进行身份验证(以前它可以正常进行身份验证)。我想,一旦我让 MySQL 再次正常运行,我就会在另一个帖子中讨论这个问题。
漫长的一天结束了,我有点精疲力尽了。
编辑:评论中的解决方案:MySQL 更新后无法启动
答案1
Debian 8 “Jessie” 中的 MySQL 版本为 5.5。安装时,大多数用户会安装 mysql-server 包,该包依赖于 mysql-server-5.5 包。在 Debian 9 “Stretch” 中,mysql-server 包依赖于名为 default-mysql-server 的新包。该包又依赖于 mariadb-server-10.1。Jessie 中没有 default-mysql-server 包。
阅读文章升级mysql
至mariadb
在 Debian 9 中从 MySQL 迁移到 MariaDB
答案2
您是否检查过所有文件夹/文件(mySQL 运行所需的)是否都设置为正确的所有者:组和权限?