多年来,运行MySQL的Linux VM就像一个冠军。这是一台机器,用于在网站更改被推送到真实的实时网站之前对其进行测试。我们的实时网站由托管公司托管,提供了很大的支持,但我们的开发网站由我们的办公室托管和维护,我们几乎不知道任何Linux等。
前几天,当我在开发机器上测试对网站的一些更改时,我注意到它无法连接到数据库。我只是从备份恢复,但当然我从未实现过备份过程,因为我不认为我需要它,因为它只是一个开发盒。所以现在我要么必须修复MySQL,要么从头开始重新启动开发站点,这让我花了一段时间才能上次使用。
因此,我们网站(php)上的每个页面都以包含/运行代码以连接到数据库的行开头。这就是我第一次注意到这个问题的原因,因为每个页面都看起来乱七八糟,进入浏览器中的页面源,并且每个页面的顶部都是#34; MySQL登录很糟糕。&#34;在<html>
标记之前。我尝试重新启动服务器,它做了同样的事情。我做了一个&#34; ps aux |少&#34;并找到了:
/usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --socket=/var/lib/mysql/mysql.sock
告诉我它正在运行。我也无法使用MySQL工作台进行连接。为什么一台Linux机器,组织中没有其他任何人会触及,蓝色停止允许MySQL连接? MySQL标准端口在我们的防火墙上打开,但我们使用具有强密码的原始用户名,因此我认为它是安全的。
答案 0 :(得分:0)
如果可能,尝试以root身份从命令行连接mysql。如果root用户是在mysql中定义的,那么你可能需要一个密码,但是没有密码设置,我认为你只能以root用户身份登录,然后从交互式mysql会话中授予权限。这就是下面的内容,还有一个重置密码的过程,如果它看起来风险太大,我可以为你做这个: https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
root@grapevine:~# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 105 Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +---------------------+ | Database | +---------------------+ | information_schema | | dolibarr | | drupal7 | | mysql | | performance_schema | | secretbe_drupalmain | +---------------------+ 6 rows in set (0.00 sec) mysql>
答案 1 :(得分:0)
在mysql-server上检查是否有东西在该端口上侦听:
netstat -tlpn | grep 3306
(3306是默认端口,但您可以检查是否使用其他端口:grep port /etc/mysql/my.cnf
)
如果这样可行,请尝试在该mysql机器上本地连接。
mysql -u username -p --host=127.0.0.1 --port=3306
(现在应该要求输入密码。)
如果您已登录,请执行此操作以检查当前的mysql连接:
mysql> SHOW STATUS WHERE `variable_name` = 'Threads_connected'
它应该返回一些值。数据库有连接限制;如果您的应用程序没有正确关闭连接,这可能是您无法建立新连接的原因。
现在检查是否可以从VM访问端口,这是一个快速的方法:
curl -I 192.168.1.100:3306
(用您的数据库IP替换ip)。它应该返回一些奇怪的错误消息,其中包含&#39; ..... / _ o3mysql_native_password&#39; 。至少你知道现在mysql在那个端口后面,你有权访问。