Ubuntu 20.04 - 停止 MySQL。现在它无法启动(错误13,权限被拒绝)

问题描述 投票:0回答:6

在 Ubuntu 20.04 上运行 DigitalOcean LAMP Stack (1GB VPS) 时,我在上传媒体文件时在 Wordpress 中遇到间歇性的“建立数据库连接错误”错误。这引发了以下 Apache 错误:

WordPress database error MySQL server has gone away for query...

发生此问题时,MySQL 日志重复打印以下内容,此后没有其他内容:

    2020-12-19T12:14:43.708558Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
    2020-12-19T12:14:43.992793Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.22-0ubuntu0.20.04.3'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu).
    2020-12-19T12:14:59.498001Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.22-0ubuntu0.20.04.3) starting as process 190645
    2020-12-19T12:14:59.512933Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
    2020-12-19T12:15:00.093514Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
    2020-12-19T12:15:00.448326Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '127.0.0.1' port: 33060, socket: /var/run/mysqld/mysqlx.sock
    2020-12-19T12:15:00.524531Z 0 [System] [MY-010229] [Server] Starting XA crash recovery...
    2020-12-19T12:15:00.543848Z 0 [System] [MY-010232] [Server] XA crash recovery finished.
    2020-12-19T12:15:00.652394Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.

我尝试了此修复:WordPress 数据库错误 MySQL 服务器已消失进行查询

网站仍然显示错误,所以我想我应该重新启动MySQL,但它不会重新启动。

有了

sudo service MySQL start
,我明白了

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

运行第一个命令:

● mysql.service - MySQL Community Server
 Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
 Active: failed (Result: exit-code) since Sat 2020-12-19 12:45:50 UTC; 1min 3s ago
Process: 192068 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Process: 192076 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
Main PID: 192076 (code=exited, status=1/FAILURE)
 Status: "Server startup in progress"
  Error: 13 (Permission denied)

运行第二个命令

 Hint: You are currently not seeing messages from other users and the system.
  Users in groups 'adm', 'systemd-journal' can see all messages.
  Pass -q to turn off this notice.
 -- Defined-By: systems
 -- Support: http://www.ubuntu.com/support
 --
 -- A start job for unit UNIT has finished successfully.
 --
 -- The job identifier is 8.
 Dec 19 12:13:48 server systemd[189372]: Listening on REST API socket for snapd user session agent.
 -- Subject: A start job for unit UNIT has finished successfully
 -- Defined-By: systems
 -- Support: http://www.ubuntu.com/support
 --
 -- A start job for unit UNIT has finished successfully.
 --
 -- The job identifier is 11.
 Dec 19 12:13:48 server systemd[189372]: Listening on D-Bus User Message Bus Socket.
 -- Subject: A start job for unit UNIT has finished successfully
 -- Defined-By: systems
 -- Support: http://www.ubuntu.com/support
 --
 -- A start job for unit UNIT has finished successfully.
 --
 -- The job identifier is 9.
 Dec 19 12:13:48 server systemd[189372]: Reached target Sockets.
 -- Subject: A start job for unit UNIT has finished successfully
 -- Defined-By: systems
 -- Support: http://www.ubuntu.com/support
 --
 -- A start job for unit UNIT has finished successfully.
 --
 -- The job identifier is 5.
 Dec 19 12:13:48 server systemd[189372]: Reached target Basic System.
 -- Subject: A start job for unit UNIT has finished successfully
 -- Defined-By: systems
 -- Support: http://www.ubuntu.com/support
 --
 -- A start job for unit UNIT has finished successfully.
 --
 -- The job identifier is 2.
 Dec 19 12:13:48 server systemd[189372]: Reached target Main User Target.
 -- Subject: A start job for unit UNIT has finished successfully
 -- Defined-By: systems
 -- Support: http://www.ubuntu.com/support
 --
 -- A start job for unit UNIT has finished successfully.
 --
 -- The job identifier is 1.
 Dec 19 12:13:48 server systemd[189372]: Startup finished in 168ms.
 -- Subject: User manager start-up is now complete
 -- Defined-By: systems
 -- Support: http://www.ubuntu.com/support
 --
 -- The user manager instance for user 1000 has been started. All services queued
 -- for starting have been started. Note that other services might still be starting
 -- up or be started at any later time.
 --
 -- Startup of the manager took 168965 microseconds.
 Dec 19 12:15:07 server sudo[190726]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
 Dec 19 12:15:09 server sudo[190726]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
 Dec 19 12:30:17 server sudo[191518]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
 Dec 19 12:30:19 server sudo[191518]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
 Dec 19 12:32:25 server sudo[191686]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
 Dec 19 12:32:27 server sudo[191686]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory

第一个错误导致我出现此问题:https://askubuntu.com/questions/1228827/mysql-error-13-permission-denied

但是MySQL已经拥有/var/lib/mysql。 /usr/sbin/mysqld 的所有者是 root。这与 MySQL 运行良好的另一台服务器上的情况相同。我真的应该改变这个吗?

mysql permissions ubuntu-20.04
6个回答
9
投票

问题是我已授予用户

/var/log/mysql
的所有权来读取文件。
sudo chown mysql:mysql -R /var/log/mysql
允许我启动mysql


3
投票

如果您手动删除

binlog
文件,可能会发生这种情况。

  • 检查
    /var/log/mysql/error.log
    查看底线,如果原因与
    binlog
    文件有关。
  • 如果,那么清除文件内容
    /var/lib/mysql/binlog.index
    然后重新启动mysql对我有帮助。

2
投票

简单运行更新命令
apt-get 更新
apt-get 升级

它会自动更新 mysql 所需的权限。
它解决了我的问题


1
投票

我也遇到了同样的问题。我将 mysql 数据目录从

/var/lib/mysql
移动到
/media/anand/databank/mysql
。我向所有用户/组授予了所有读写权限,但 mysql 服务器无法重新启动,
Error: 13 (Permission denied)
。在反复阅读这个和其他线程之后,我可以发现对于文件夹
anand
,没有向其他人(包括用户 mysql)授予访问权限。因此,即使用户(在我的例子中是 mysql)具有对
mysql
文件夹的完全访问权限,但该用户也不会到达
mysql
文件夹,直到该用户获得访问
anand
文件夹的权限。有一次,我在folder上授予mysql用户只读权限
anand
,mysql服务器启动没有错误。

简而言之,如果您向用户授予某个文件夹的权限。请检查该用户是否至少对所有父文件夹具有只读/访问文件权限


0
投票

有同样的问题

system status mysql Main PID: 178577 (code=exited, status=1/FAILURE) Status: "Server startup in progress" Error: 13 (Permission denied) 
我的解决方案
chown mysql:mysql -R /var/lib/mysql/ /var/log/mysql/ 
启动就OK了


0
投票

Ubuntu下MySQL 8有一个bug:即使你没有安装限制路径使用的apparmor,并且权限设置正确,使用非标准数据目录时MySQL也会因为权限错误而失败——如果你使用除默认

/var/lib/mysql
之外的其他数据位置,将数据移回该位置并更新配置文件中的
datadir
(请参阅下面的有效示例配置),即使没有权限更改或重新安装,它也会正常运行需要——它将正常启动。

[client]
socket=/var/lib/mysql/mysql.sock

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure_file_priv=/var/lib/mysql-files
log_error=/var/log/mysql/error.log
© www.soinside.com 2019 - 2024. All rights reserved.