MySQL有何常见问题及对应的解决方案


下文给大家带来关于MySQL有何常见问题及对应的解决方案,感兴趣的话就一起来看看这篇文章吧,相信看完MySQL有何常见问题及对应的解决方案对大家多少有点帮助吧。一、 忘记 MySQL 的 root 密码1. 登录到数据库所在的云服务器,手工 kill 掉 mysql 进程。(1) 登录到数据库所在的云服务器,手工 kill 掉 MySQL 进程:root@bogon:/data/mysql# kill `cat ./mysql.pid`
其中,mysql.pid 指的是 MySQL 数据目录下的 pid 文件,它记录了 MySQL 服务的进程号。(2) 使用 –skip-grant-tables 选项重启 MySQL 服务:zj@bogon:/data/mysql$ sudo /usr/local/mysql/bin/mysqld –skip-grant-tables –user=root &
–skip-grant-tables 选项意思是启动 MySQL 服务时跳过权限表认证。启动后,连接到 MySQL 的 root 将不需要口令。(3) 用空密码的 root 用户连接到 mysql ,并且更改 root 口令:由于使用了 –skip-grant-tables 选项启动,使用 “set password” 命令更改密码失败,直接更新 user 表的 authentication_string(测试版本为5.7.18,有的版本密码字段是 ‘password’) 字段后,更改密码成功。刷新权限表,使权限认证重新生效。重新用 root 登录时,就可以使用刚刚修改后的口令了。二、如何处理 myisam 存储引擎的表损坏有的时候可能会遇到 myisam 表损坏的情况。一张损坏的表的症状通常是查询意外中断,并且能看到下述错误:’table_name.frm’ 被锁定不能更改不能找到文件 ‘tbl_name.MYYI’ (errcode:nnn)文件意外结束记录文件被毁坏从表处理器得到错误 nnn。通常有以下两种解决方法:1. 使用 myisamchk 工具使用 MySQL 自带的 myisamchk 工具进行修复:shell> myisamchk -r tablename
其中 -r 参数的含义是 recover,上面的方法几乎能解决所有问题,如果不行,则使用命令:shell> mysiamchk -o tablename
其中 -o 参数开发云主机域名的含义是 –safe-recover,可以进行更安全的修复。2. 使用 sql 命令使用 MySQL 的 check table 和 repair table 命令一起进行修复,check table 用来检查表是否有损坏;repair table 用来对坏表进行修复。三、 数据目录磁盘空间不足的问题系统上线后,随着数据量的不断增加,会发现数据目录下的可用空间越来越小,从而给应用造成了安全隐患。1. 对于 myisam 存储引擎的表对于 myisam 存储引擎的表,在建表时可以用如下选项分别制定数据目录和索引目录存储到不同的磁盘空间,而默认会同时放在数据目录下:data directory = ‘absolute path to directory’index directory = ‘absolute path to directory’
如果表已经创建,只能先停机或者将表锁定,防止表的更改,然后将表的数据文件和索引文件 mv 到磁盘充足的分区上,然后在原文件处创建符号链接即可。2. 对于 innodb 存储引擎的表因为数据文件和索引文件是存放在一起的,所以无法将它们分离。当磁盘空间出现不足时,可以增加一个新的数据文件,这个文件放在充足空间的磁盘上。
具体实现方法是在参数 innodb_data_file_path 中增加此文件,路径写为新磁盘的绝对路径。
例如,如果 /home 下空间不足,希望在 /home1 下新增加一个可自动扩充数据的文件,那么参数可以这么写:innodb_data_file_path = /home/ibdata1:2000M;/home1/ibdata2:2000M:autoextend
参数修改后,必须重启数据库才可以生效。四、DNS反向解析的问题 (5.0 以后的版本默认跳过域名逆向解析)在客户端执行 show processlist 命令,有时会出现很多进程,类似于:unauthenticated user | 192.168.10.10:55644 | null | connect | null | login | null
这些进程会累计的越来越多,并且不会消失,应用无法正常相应,导致系统瘫痪。MySQL 在默认情况下对于远程连接过来的 IP 地址会进行域名的逆向解析,如果系统的 hosts 文件中没有与之对应的域名,MySQL 就会将此连接认为是无效用户,所以下进程中出现 unauthenticated user 并导致进程阻塞。解决的方法很简单,在启动时加上 –skip-name-resolve 选项,则 MySQL 就可以跳过域名解析过程,避免上述问题。五、mysql.sock 丢失后如何连接数据库在 MySQL云服务器本机上连接数据库时,经常会出现 mysql.sock 不存在,导致无法连接的问题。这是因为如果指定 localhost 作为一个主机名,则 mysqladmin 默认使用 Unix 套接字文件连接,而不是 tcp/ip。而这个套接字文件(一般命名为 mysql.sock)经常会因为各种原因而被删除。通过 –protocol=TCP|SOCKET|PIPE|MEMORY 选项,用户可以显式地指定连接协议,下面演示使用了 Unix 套接字失败后使用 tcp 协议连接成功的例子。1. Unix 套接字连接:zj@bogon:~$ mysqlERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
2. tcp 连接zj@bogon:~$ mysql –protocol=TCP
看了以上关于MySQL有何常见问题及对应的解决方案详细内容,是否有所收获。如果想要了解更多相关,可以继续关注我们的行业资讯板块。

相关推荐: MySQL集群搭建实现高可用

MySQL集群搭建实现高可用 MySQL Cluster是MySQL适合于分布式计算环境的高实用、高冗余版本。Cluster的汉语是”集群”的意思。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。 MySQL …

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 06/08 12:42
Next 06/08 12:42

相关推荐