我已通过 my.ini 将字符集更改为 utf8,并在执行服务重启时忘记了另一个终端会话中的用户登录。
最初,systemd 报告了在服务仍在运行时停止服务的问题。通过 systemd 重新启动系统后,再也无法启动该服务。
$ sudo service mysql status
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: activating (start-post) (Result: exit-code)
Process: 2750 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
Process: 2747 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 2750 (code=exited, status=1/FAILURE); : 2751 (mysql-systemd-s)
Tasks: 2 (limit: 512)
CGroup: /system.slice/mysql.service
└─control
├─2751 /bin/bash /usr/share/mysql/mysql-systemd-start post
└─2838 sleep 1
systemd[1]: Starting MySQL Community Server...
systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
这是 systemd 报告的服务的当前状态。
另外,当我尝试启动服务时:
$ sudo systemctl start mysql.service
我得到一个失败分析如下journalctl
:
$ journalctl -xe
-- Unit mysql.service has begun starting up.
pam_unix(sudo:session): session closed for user root
user : TTY=pts/0 ; PWD=/var/log/mysql ; USER=root ; COMMAND=/bin/systemctl start mysql.service
pam_unix(sudo:session): session opened for user root by user(uid=0)
mysql.service: Main process exited, code=exited, status=1/FAILURE
pam_unix(cron:session): session opened for user root by (uid=0)
(root) CMD ( [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean)
pam_unix(cron:session): session closed for user root
Failed to start MySQL Community Server.
-- Subject: Unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
...
这表明与身份验证模块有关pam
。
但我不知道该如何处理...
答案1
我最终通过使用以下命令以 root 身份登录解决了该问题:
sudo mysql -uroot -p
password:******
然后退出
mysql> exit
并且服务开始工作(并正常重新启动)。
看来这项服务是在僵尸状态!尽管报道为不运行它systemd
实际上正在运行,因为我能够使用 root 登录并发出一个show databases;
命令,这就像一个魅力!
确实很奇怪的问题!顺便说一句,如果有人知道为什么我需要使用数据库中的sudo
登录方式,而所有其他用户都通过对客户端及其凭据的简单调用来登录。我很想了解为什么! linux用户和用户之间似乎存在着一种我从未真正理解过的奇怪关系。root
mysql
mysql