• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL常见问题和应用技巧

mysql 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

前言 在MySQL日常开发或者是维护中,有一些问题或是故障往往是难以避免的,如丢失密码、表损坏。在此总结一下常见的问题,以备今后所需。 忘记MySQL的root密码 解决办法: 1.登录数据库所在服务器,手动kill掉Mysql进程 关闭进程的命令为: kill 进程号 (li

前言

在MySQL日常开发或者是维护中,有一些问题或是故障往往是难以避免的,如丢失密码、表损坏。在此总结一下常见的问题,以备今后所需。

忘记MySQL的root密码

解决办法:

1.登录数据库所在服务器,手动kill掉Mysql进程

关闭进程的命令为:kill 进程号(linux下)
关闭进程的命令为:taskkill 进程号(win下)
怎么查看进程号呢?
我们都知道MySQL的进程号一般都会保存在Mysql数据目录下的,它记录了Mysql的服务进程号。文件名为hostname.pid,如下,其中YEGZT8JOIIU2LKY为主机名。

linux下查看进程通过使用ps命令;在win下,我们也可以通过tasklist查看进程号,

打开该文件,可以看到,里面仅仅记录着进程好

现在为了方便,我主要演示win下操作,不准备打开虚拟机在测试了。如果我们不熟悉taskkill命令,可以通过taskkill /?来查看命令。

2.使用–skip-grant-tables选项重启MySQL服务

linux下
语法:./bin/mysqld_safe –skip-grant-tables
其中–skip-grant-tables选项代表启动mysql
(注意win下安装的Mysql,我使用mysqld –skip-grant-tables )

3.使用空密码的root用户连接MySQL,并修改root口令

修改如下
因为使用–skip-grant-tables启动,故使用set password命令失败。

使用update语句,直接更新mysql数据库中user表。

4.更新权限

5.重新登录

退出后,发现在此使用mysql -uroot登录,会登陆不成功,只能使用密码登陆。

处理MyISAM存储引擎的表损坏

在使用MySQL,可能会遇到过MyISAM存储引擎的表损坏的情况。如以下情况:

  • .frm被锁定不能修改
  • 找不到.myi文件(索引文件)
  • 我呢间意外结束
  • 记录文件被毁坏
  • 从表处理器得到错误nnn
    解决办法1
    使用MySQL自带的myisamchk工具进行修复
    打开bin目录,可以看到该工具

    命令如下
    myisamchk -r tablename
    r代表recover

    myisamchk -o tablename
    -o参数代表–safe-recover 可以进行更安全的修复
    解决办法2
    使用MySQL的CHECK table和repair table命令进行修复
    check table用来检查表是否有损坏,repair table用来对坏表进行修复。

MyISAM表过大,无法访问问题

首先我们可以通过myisamchk命令来查看MyISAM表的情况。如下图,我查看admin表

datefile length代表当前文件大小
keyfile length代表索引文件大小
max datefile length 最大文件大小
max keyfile length 最大索引大小
可以通过如下命令来进行扩展数据文件大小
alter table table_name MAX_ROWS=88888888 AVG_ROW_LE=66666

数据目录磁盘空间不足的问题

针对MyISAM存储引擎

可以将数据目录和索引目录存储到不同的磁盘空间。

针对InnoDB存储引擎

对于InnoDB存储引擎的表,因为数据文件和索引文件时存放在一起的。所以无法将他们分离。当磁盘空间出现不足时候,可以增加一个新的数据文件,这个文件放在有充足空间的磁盘上。具体实现是通过InnoDB_data_file_path中增加此文件。
innodb_data_file_path=/home/mysql/data:10000M;/user/mysql/data:10000M:autoextend
参数修改之后,需要重启服务器,才可以生效。

同一台主机上安装多个Mysql

除了每个Mysql安装目录不能相同外,还需要的是port和socket不能一样。
mysql.sock就是客户端连接与mysql间通信用的。socket文件,只能本机使用,远程连接要通过tcp/ip了。

总结

时隔一个月了,方将《MySQL本文来源gao@!dai!ma.com搞$$代^@码!网数据库开发、优化与管理维护》阅读完。感觉这本书还是相当不错的,挺适合像我这样的初学者。在阅读过程中,感觉受益颇多。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL常见问题和应用技巧

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址