一次解决MySQL无法启动的全过程

一次解决MySQL无法启动的全过程,第1张

启动Mysql提示ERROR! The server quit without updating PID file (/usr/local/var/mysql/xxxx.local.pid).

1、查看mysql错误日志:打开/usr/local/var/mysql/xxxx.err或者xxxx.local.err文件。

2、问题应该是某个程序占用了mysql的默认端口3306。

3、查看端口使用情况lsof -i:3306,发现是一个用户名为_mysql启动了mysqld指令占用了3306,感觉现象非常奇怪,不清楚为什么会有这个用户组,为什么会启动mysqld,由于这个电脑是公司其他同事转移资产到的我名下,所以有可能是之前用户或者公司it装了什么服务导致的。

4、首先尝试干掉进程:sudo kill xxxx,结果发现当kill后,还会重新启动。

5、尝试修改mysql默认启动端口,Baidu上有人告诉修改/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist文件

添加<string>--port=3307</string>保存,先重新启动mysql服务,发现问题依然存在,发现配置没有起作用,默认端口依然是3306,然后考虑重新启动电脑,看看是否可以修改占用默认端口的配置。

6、重启后再次查看3306端口占用情况,发现确实不存在了。但是发现启动mysql服务时,依然存在问题:

仔细观察发现,这个占用和plist中的mysql配置一样的,所以可以确定每次启动计算机后,会按默认配置执行一个mysqld。

7、不清楚为什么会按com.oracle.oss.mysql.mysqld.plist配置执行mysqld,于是把注意力放在了Mac启动上。

8、Mac的启动原理是:

看到这里就明白了,原来LaunchDaemons里面放的是Mac启动时的一些启动服务,

9、System/Library和/Library和~/Library目录的区别:

10、System/Library和/Library和~/Library目录的区别:

11、有了上面的结果,于是把注意力放在了com.oracle.oss.mysql.mysqld.plist上,每个Mac启动中都有么,这个是如何添加的。首先查看了家里的其他苹果电脑,发现都没有这个plist文件,于是开始研究这个文件的产生原因。

12、经过Baidu怀疑这个文件应该是之前用dmg安装包安装的mysql产生的,在设置中也发现了残留信息

于是果断把自动启动去掉,重启计算机。

13、重启后,发现无论是3306还是3307端口上都没有mysql服务了,于是运行mysql.server start,这次终于看见了Starting MySQL . SUCCESS!

14、删除com.oracle.oss.mysql.mysqld.plist文件,重启电脑后,发现设置中仍然还有MySQL的控制选项。

15、MySQL dmg安装方式的卸载方法:

至此,这个问题算是完美解决了。

一、Can’t connect to MySQL server on ‘localhost’ (10061)

翻译:不能连接到 localhost 上的mysql

分析:这说明“localhost”计算机是存在的,但在这台机器上却没提供MySQL服务。

需要启动这台机器上的MySQL服务,如果机子负载太高没空相应请求也会产生这个错误。

解决:既然没有启动那就去启动这台机子的mysql。如果启动不成功,多数是因为你的my.ini配置的有问题。重新配置其即可。

如果觉得mysql负载异常,可以到mysql/bin 的目录下执行mysqladmin -uroot -p123 processlist来查看mysql当前的进程。

二、Unknown MySQL Server Host ‘localhosadst’ (11001)

翻译:未知的MySQL服务器 localhosadst

分析:服务器 localhosasdst 不存在。或者根本无法连接

解决:仔细检查自己论坛下面的 ./config.inc.php 找到$dbhost重新设置为正确的mysql 服务器地址。

三、Access denied for user: ‘roota@localhost’ (Using password: YES)

翻译:用户 roota 访问 localhost 被拒绝(没有允许通过)

分析:造成这个错误一般数据库用户名和密码相对mysql服务器不正确

解决:仔细检查自己论坛下面的 ./config.inc.php 找到$dbuser、$dbpw核实后重新设置保存即可。

四、Access denied for user: ‘red@localhost’ to database ‘newbbs’

翻译:用户 red 在localhost 服务器上没有权限 *** 作数据库newbbs

分析:这个提示和问题三是不同的。那个是在连接数据库的时候就被阻止了,而这个错误是在对数据库进行 *** 作时引起的。比如在select update等等。这个是因为该用户没有 *** 作数据库相应的权力。比如select 这个 *** 作在mysql.user.Select_priv里记录 Y 可以 *** 作N 不可以 *** 作。

解决:如果是自己的独立主机那么更新mysql.user 的相应用户记录,比如这里要更新的用户为red 。或者直接修改 ./config.inc.php 为其配置一个具有对数据库 *** 作权限的用户

或者通过如下的命令来更新授权grant all privileges on dbname.* to ‘user’@’localhost’ identified by ‘password’

提示:更新了mysql库中的记录一定要重启mysql服务器才能使更新生效

FLUSH PRIVILEGES

五、No Database Selected

翻译:没有数据库被选择上

分析:产生的原因有两种

config.inc.php 里面$dbname设置的不对。致使数据库根本不存在,所以在 $db->select_db($dbname)时返回了false

和上面问题四是一样的,数据库用户没有select权限,同样会导致这样的错误。当你发现config.inc.php的设置没有任何问题,但还是提示这个错误,那一定就是这种情况了。

解决:对症下药

打开config.inc.php 找到$dbname核实重新配置并保存

同问题四的解决方法

六、Can’t open file: ‘xxx_forums.MYI’. (errno: 145)

翻译:不能打开xxx_forums.MYI

问题分析:

这种情况是不能打开 cdb_forums.MYI 造成的,引起这种情况可能的原因有:

1、服务器非正常关机,数据库所在空间已满,或一些其它未知的原因,对数据库表造成了损坏。

2、类 unix *** 作系统下直接将数据库文件拷贝移动会因为文件的属组问题而产生这个错误。

解决方法:

1、修复数据表

可以使用下面的两种方式修复数据表:(第一种方法仅适合独立主机用户)

1)使用 myisamchk ,MySQL 自带了专门用户数据表检查和修复的工具 —— myisamchk 。更改当前目录到 MySQL/bin 下面,一般情况下只有在这个下面才能运行 myisamchk 命令。常用的修复命令为:myisamchk -r 数据文件目录/数据表名.MYI;

2)通过 phpMyAdmin 修复, phpMyAdmin 带有修复数据表的功能,进入到某一个表中后,点击“ *** 作”,在下方的“表维护”中点击“修复表”即可。

注意:以上两种修复方式在执行前一定要备份数据库。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8710236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存