我正在 Linux Mint 20.2 上设置多个 MariaDB 实例。我已经成功设置了第一个,看起来基本上没问题(我可以连接到数据库,并通过查询 MariaDB 变量,可以验证套接字、端口等是否与我在配置文件中放入的内容匹配)。但是,我收到了一个令人困惑的错误,该错误不是来自服务器进程本身,而是来自关联的 systemd 脚本。这就是我启动服务然后检查状态时发生的情况:
root@TMG-Toshiba:/var/local/mysql/toot# systemctl status mariadb@toot
● [email protected] - MariaDB 10.3.32 database server (multi-instance toot)
Loaded: loaded (/lib/systemd/system/[email protected]; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-12-07 18:35:11 GMT; 2s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 7776 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Process: 7781 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITIONtoot (code=exited, status=0/SUCCESS)
Process: 7790 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`cd /usr/bin/..; /usr/bin/galera_recovery --defaults-file=/etc/mysql>
Process: 7881 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITIONtoot (code=exited, status=0/SUCCESS)
Process: 7883 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
Main PID: 7850 (mysqld)
Status: "Taking your SQL requests now..."
Tasks: 30 (limit: 4137)
Memory: 85.9M
CGroup: /system.slice/system-mariadb.slice/[email protected]
└─7850 /usr/sbin/mysqld --defaults-file=/etc/mysql/conf.d/mytoot.cnf
Dec 07 18:35:11 TMG-Toshiba systemd[1]: Starting MariaDB 10.3.32 database server (multi-instance toot)...
Dec 07 18:35:11 TMG-Toshiba mysqld[7850]: 2021-12-07 18:35:11 0 [Note] /usr/sbin/mysqld (mysqld 10.3.32-MariaDB-0ubuntu0.20.04.1) starting as process 7850 ...
Dec 07 18:35:11 TMG-Toshiba systemd[1]: Started MariaDB 10.3.32 database server (multi-instance toot).
Dec 07 18:35:12 TMG-Toshiba /etc/mysql/debian-start[7888]: Looking for 'mysql' as: /usr/bin/mysql
Dec 07 18:35:12 TMG-Toshiba /etc/mysql/debian-start[7888]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck
Dec 07 18:35:12 TMG-Toshiba /etc/mysql/debian-start[7888]: Version check failed. Got the following error when calling the 'mysql' command line client
Dec 07 18:35:12 TMG-Toshiba /etc/mysql/debian-start[7888]: ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (115)
Dec 07 18:35:12 TMG-Toshiba /etc/mysql/debian-start[7888]: FATAL ERROR: Upgrade failed
Dec 07 18:35:12 TMG-Toshiba /etc/mysql/debian-start[7897]: Checking for insecure root accounts.
Dec 07 18:35:12 TMG-Toshiba debian-start[7900]: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
它是否会抱怨无法通过套接字连接,因为我在“client.cnf”部分中指定了“protocol = tcp”(我这样做是为了输入“mysql -P 3307 .. ., mysql -P 3308" 等,而不必输入套接字路径)?但无论如何,它是否应该运行该脚本? “debian-start”脚本由 [email protected] 调用,但如果您查看“debian-start”脚本本身,它实际上包含这一行:
NOTE: This file is read only by the traditional SysV init script, not systemd.
那么我应该从 [email protected] 中删除对 debian-start 的调用吗?
我也遇到了同样的问题,刚刚解决了。
在此页面您可以找到丢失文件的内容 (
/etc/mysql/debian-start
)。您只需在预期位置创建文件,设置其内容,授予其执行权限(例如chmod 755
),然后重新启动服务即可。
请注意,我不是该脚本的作者,使用它的风险由您自行承担。对我来说,它解决了问题,我并不担心安全性,因为我目前正在我建议仅用于测试的机器上运行所有内容。
祝你好运!