通过 systemd 一个服务器有多个 MySQL 实例-无法连接客户端

通过 systemd 一个服务器有多个 MySQL 实例-无法连接客户端

我正在使用 MySQL 8.0.33

下列的官方文档,我使用 systemd 设置了多个 mysql 实例。我的 cnf 文件如下。我能够同时启动并运行所有实例,systemctl status 根据我的配置显示每个实例都有正确的 sock 文件,但我无法将客户端连接到除初始默认实例之外的任何实例。

当我第一次安装 mysql按照此处的说明,我输入root密码。

当我最初启动每个附加实例时,error.log 报告创建了一个具有空密码的 root 用户。

启动服务器后(sudo systemctl start mysql@seeds; sudo systemctl start mysql@manofmystery),我尝试连接客户端:

mysql --host=localhost --port=3307(or 3308) -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

mysql --host=127.0.0.1 --port=3307 -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

mysql --host=localhost --port=3307 -u root -p
Enter password: (ENTER for empty password)
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

mysql --host=127.0.0.1 --port=3307 -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

如果我输入为初始实例设置的 root 密码,我就能连接并得到 mysql> 提示符,但是当我输入“status”时,它告诉我我已连接到该 sock 文件,而不是端口 3307 的文件。所以我可以以 root 身份连接到初始实例,但不能连接到任何其他实例。

我已在 cnf 文件中尝试过“skip-grant-tables”,但没有什么区别。

我的 /etc/mysql/mysql.conf.d/mysqld.cnf 文件:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
mysqlx          = 0

[mysqld@seeds]
pid-file        = /var/run/mysqld-seeds/mysqld.pid
socket          = /var/run/mysqld-seeds/mysqld.sock
port            = 3307
datadir         = /var/lib/mysql-seeds
log-error       = /var/log/mysql/seeds.error.log
mysqlx          = 0

[mysqld@manofmystery]
pid-file        = /var/run/mysqld-manofmystery/mysqld.pid
socket          = /var/run/mysqld-manofmystery/mysqld.sock
port            = 3308
datadir         = /var/lib/mysql-manofmystery
log-error       = /var/log/mysql/manofmystery.error.log
mysqlx          = 0

再次,我已验证所有三个实例都在运行,并且具有日志和数据目录。我只是无法连接到端口 3307 和 3308 上的实例。

相关内容