我有一个AWS EC2实例。我在ubuntu服务器上安装了mysql,现在尝试连接到ubuntu服务器上已安装的数据库。
我终生无法弄清为什么mysql无法在绑定到配置文件的IP上启动。
我运行以下命令:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
耦合事物:
54.62.33.334
而不是127.0.0.1
,因为这是生产服务器。mysql
替换了默认用户jason
我创建了一个名为“ jason”的用户,并使用以下命令授予他对所有数据库的访问权限:
GRANT ALL PRIVILEGES ON 'jason'@'54.62.33.334';
当我使用sudo systemctl restart mysql
重新启动mysql服务器时,会引发此错误:
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
我运行以下命令来查看错误。
journalctl -xe
它给了我这个。
Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: ERROR: Unable to start MySQL server: Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: 2020-07-02T02:51:53.747898Z 0 [ERROR] Fatal error: Can't change to run as user 'jason' ; Please check that the user exists! Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: 2020-07-02T02:51:53.748587Z 0 [ERROR] Aborting Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: Please take a look at https://wiki.debian.org/Teams/MySQL/FAQ for tips on fixing common upgrade issues. Jul 02 02:51:53 ip-54.62.33.334 mysql-systemd-start[6378]: Once the problem is resolved, restart the service. Jul 02 02:51:53 ip-54.62.33.334 systemd[1]: mysql.service: Control process exited, code=exited status=1 Jul 02 02:51:53 ip-54.62.33.334 systemd[1]: mysql.service: Failed with result 'exit-code'. Jul 02 02:51:53 ip-54.62.33.334 systemd[1]: Failed to start MySQL Community Server. -- Subject: Unit mysql.service has failed -- Defined-By: systemd
但是我确实有一个名为jason
的用户,我运行以下命令来检查用户表中是否存在该用户,并且该用户返回1,这是正确的,因此我不确定自己在做什么错。
SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'username');
仅供参考:我可以使用root很好地连接到数据库,但是我想使用用户jason进行连接,但是由于某些原因我不能。
任何建议,我将不胜感激。在过去的4-5个小时里,我一直在努力解决这个问题。
答案 0 :(得分:0)
my.cnf文件将[mysqld]
(或server
或其他一些选项)中的用户列为服务器启动系统的Unix用户。请勿更改。
您可以在配置文件的user=jason
或[client]
部分中设置[mysql]
,该文件将引用数据库用户jason
。这需要使用连接到服务器的应用程序使用的配置。
相反,感谢您绑定到公共IP地址,您应该使用ssh隧道来管理公共数据库实例。
在SQL上:
SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'username');
无需将其放在子查询中。一个简单的选择就可以了。另外,(user,host)
组合是一个不同的用户。