当前位置:   article > 正文

Ubuntu下MySQL无法启动和访问的问题解决与修复_ubuntu mysql 不能启动怎么解决 /etc/init.d/mysql start

ubuntu mysql 不能启动怎么解决 /etc/init.d/mysql start

目录

一、环境

 二、背景

三、解决步骤

1.使用安全模式进入mysql【1】

2.重启mysql服务

3.使用安全模式进入mysql并修改root密码

3.1安全模式下进入不需要验证

3.2进入mysql数据库

3.3把user表密码重置为123456

 3.4 user表操作报错解决【2】

3.5 再执行更新操作

3.6刷新系统权限相关表

3.7退出mysql 

4.将第一步文件中的skip-grant-tables注释掉,并重启MySQL服务器

5、再次重新访问mysql,发现依旧无法进入

6、解决user表为空的问题【3,4】

6.1修改mysqld.cnf文件

6.2重启mysql服务,并使用root 空密码连接数据库

6.3向user表插入root用户 

6.4修改root用户权限,并更新权限,然后退出

7、将配置文件修改恢复

8、重启mysql服务,能够正常访问了 

四、参考


一、环境

ubuntu虚拟机:18.04Ubuntu

 mysql:5.7.40

 二、背景

        长时间没有操作mysql了,今天有事需要访问一下,于是打开终端,输入mysql -uroot -ppassword 登录访问:报错ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104

        根据报错提示检索,查看了mysql的进程,错误日志,mysql的3306端口以及修改了mysql相关的配置文件.cnf。均没有解决,后来继续登录还会报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)。反正就各种报错,无法访问和登录。

        错误日志部分截图:

root@yh-virtual-machine:~#mysql -uroot -h 127.0.0.1 -p

Enter password:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104

root@yh-virtual-machine:~# mysql -uroot -p

Enter password:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

        解决了一晚上终于找到了解决方案,最终也将之完美处理了,下面是具体的解决步骤。

注:前期操作可能操作的mysql配置文件没有找对,网上大部分让操作的是/ect/my.cnf文件,而我电脑上真正的mysql配置文件是:/ect/mysql/mysql.conf.d/mysqld.cnf

三、解决步骤

1.使用安全模式进入mysql【1】

在/etc/mysql/mysql.conf.d/mysqld.cnf文件下的[mysqld]字段下加入一行“skip-grant-tables”

2.重启mysql服务

sudo systemctl restart mysql

3.使用安全模式进入mysql并修改root密码

3.1安全模式下进入不需要验证

mysql

3.2进入mysql数据库

use mysql

        可以使用show databases查看本地MySQL上有哪些数据库,选择mysql

3.3把user表密码重置为123456

update user set authentication_string=password('123456') where user='root' and Host ='localhost'; 

        可以使用show tables;查看mysql中有哪些表,user在其中。

 3.4 user表操作报错解决【2】

 MySQL错误Incorrect file format解决方案:

用REPAIR命令修复OK

check table <表名>;#检查表
REPAIR TABLE <表名> USE_FRM;#修复表

3.5 再执行更新操作

update user set plugin="mysql_native_password"; 

3.6刷新系统权限相关表

flush privileges;

如果报错提示其他表有3.4的报错,就对其执行一下3.4再执行3.6。

3.7退出mysql 

quit

4.将第一步文件中的skip-grant-tables注释掉,并重启MySQL服务器

sudo systemctl restart mysql

5、再次重新访问mysql,发现依旧无法进入

        这是因为user表中是空的,并没有写入root信息和验证。 

6、解决user表为空的问题【3,4】

6.1修改mysqld.cnf文件

        在配置文件中添加或修改下面两项: (文件中没有sql_mode项添加后不知sql_mode是否起作用,反正需要安全模式进入mysql)       

  1. sql_mode=NO_ENGINE_SUBSTITUTION
  2. skip-grant-tables

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
需要把STRICT_TRANS_TABLES去掉,即改为:sql_mode=NO_ENGINE_SUBSTITUTION

注:简单来说STRICT_TRANS_TABLES这个是启用严格模式,进入安全模式后如果启用了严格模式向表插入数据插入不了的;

6.2重启mysql服务,并使用root 空密码连接数据库

6.3向user表插入root用户 

insert into mysql.user(Host,User,authentication_string) values("%","root",password("123456"));

6.4修改root用户权限,并更新权限,然后退出

  1. update mysql.user set
  2. `Select_priv` = 'Y',
  3. `Insert_priv` = 'Y',
  4. `Update_priv` = 'Y',
  5. `Delete_priv` = 'Y',
  6. `Create_priv` = 'Y',
  7. `Drop_priv` = 'Y',
  8. `Reload_priv` = 'Y',
  9. `Shutdown_priv` = 'Y',
  10. `Process_priv` = 'Y',
  11. `File_priv` = 'Y',
  12. `Grant_priv` = 'Y',
  13. `References_priv` = 'Y',
  14. `Index_priv` = 'Y',
  15. `Alter_priv` = 'Y',
  16. `Show_db_priv` = 'Y',
  17. `Super_priv` = 'Y',
  18. `Create_tmp_table_priv` = 'Y',
  19. `Lock_tables_priv` = 'Y',
  20. `Execute_priv` = 'Y',
  21. `Repl_slave_priv` = 'Y',
  22. `Repl_client_priv` = 'Y',
  23. `Create_view_priv` = 'Y',
  24. `Show_view_priv` = 'Y',
  25. `Create_routine_priv` = 'Y',
  26. `Alter_routine_priv` = 'Y',
  27. `Create_user_priv` = 'Y',
  28. `Event_priv` = 'Y',
  29. `Trigger_priv` = 'Y',
  30. `Create_tablespace_priv` = 'Y'
  31. where user='root';
flush privileges;

 

7、将配置文件修改恢复

        注释掉或改正6.1中添加修改的部分。

8、重启mysql服务,能够正常访问了 

四、参考

1、https://blog.csdn.net/m0_37657841/article/details/90046238

2、https://blog.csdn.net/tgdzsjh/article/details/105411581

3、https://www.qycn.com/xzx/article/7071.html

4、https://blog.csdn.net/u012232730/article/details/96878696

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/187855
推荐阅读
相关标签
  

闽ICP备14008679号