mysql数据库常见问题及解决办法
(一)安装方面和调整默认数据位置
问题一:安装时候问题
1、安装之前,需要先执行安装vcredist,分别32位或64位。先试试new不行再试试old
2、执行安装“mysql-installer-community-5.7.20.msi”选择"server only"即可,后面都"next"
3、MySQL server5.7版出现server failed
报错日志:
- 1: Action 14:02:10: INSTALL.
- 1: 1: MySQL Server 5.7 2: {EC09D203-422B-4C9F-B623-230EF57EE709}
- 1: Action 14:02:10: FindRelatedProducts. Searching for related applications
- 1: Action 14:02:10: AppSearch. Searching for installed applications
- 1: Action 14:02:10: LaunchConditions. Evaluating launch conditions
- 1: This application requires Visual Studio 2013 Redistributable. Please install the Redistributable then run this installer again.
- 1: 1: MySQL Server 5.7 2: {EC09D203-422B-4C9F-B623-230EF57EE709} 3: 3
- 1: The action 'Install' for product 'MySQL Server 5.7.19' failed.
安装时,出现了这种错误,MySQL server,即数据库服务器没有安装成功。试了多次,在一个帖子里找到了方法。
需要升级一个插件,Visual C++ 2013 and Visual C++ Redistributable Package
插件地址:
问题二:安装后更改默认文件存放位置
在MySQL安装完成后,要修改数据库存储的位置,比如从安装目录下的C:\Program Files\MySQL\MySQL Server 5.0\Data文件夹转移到D:\mySQLData文件夹。
1、在D:\下新建mySQLData文件夹
2、停止MySQL服务,将C:\Program Files\MySQL\MySQL Server 5.0\Data下的文件夹和文件一起拷贝到D:\mySQLData文件夹下
3、在安装目录下找到my.ini文件,找到:
#Path to the database root
datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"
将datadir的值更改为D:/mySQLData/
保存后,重新启动mySQL服务即可。
问题三:my.ini位置
以下两个地址都有可能
C:\Program Files\MySQL\MySQL Server 5.7
C:\ProgramData\MySQL\MySQL Server 5.7 (此地址为隐藏地址)
问题四:服务启动失败
(1)本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止。
在启动mysql服务时出现该错误:
mysql 版本 5.7.14
系统 win 7
后来经过一系列的百度,谷歌,总算是解决了。
首先,你需要把原来的服务删除:
命令:先cd到安装目录下,然后执行命令 mysqld --remove MySQL57
注意:mysql为你的服务名称,自己可以随便定义的。
此命令需要进入mysql安装目录下的bin目录运行!
mysql的根目录下:
你需要清空data目录。
如果没有data目录,请自行创建一个空目录,起名为data
然后在bin目录下运行命令初始化
命令:mysqld --initialize-insecure --user=mysql
接着运行:
后面的路径记得改成自己的!
这是注册mysql服务!
特别注意:如果my.ini文件在C:\ProgramData\MySQL\MySQL Server 5.7\my.ini目录,需要将其复制到安装目录即C:\Program Files\MySQL\MySQL Server 5.7\my.ini (或者是放到安装目录下,要启动的对应的MYSQL\BIN目录下)
命令:mysqld --install MySQL57
然后就OK了!
我不知道那个是不是生成随机密码的。
大家可以去data目录下找.err后缀的日志。
打开文件:
会告诉你密码的!
用户名是:root
默认密码都是root
接下来就是登陆
因为我这里的密码为空,直接再空格就OK了。
完美解决!
(2)windows7下启动mysql服务出现服务名无效的原因及解决方法
问题原因:mysql服务没有安装。
解决办法: 在 mysql bin目录下 以管理员的权限 执行 mysqld.exe -install命令。
如:D:\mysql-5.7.17-win32\bin>mysqld.exe -install 然后仍然以管理员的权限 net start mysql 开启Mysql服务了。
附卸载mysql服务的方法。
1、以管理员的权限 net stop mysql ,关闭mysql服务
2、以管理员的权限 mysqld -remove ,卸载mysql服务
问题五:远程登陆
1:赋予权限
创建一个允许远程访问的用户,用户名是root,密码是123456
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;
2:权限更新
flush privileges;
(二)使用调整
一:常用命令
1:展示默认安装目录
show variables like '%basedir%'
2:展示数据默认存放位置
show variables like 'datadir';
二:删除表提示有外键约束
1 问题
删除有外键关联的数据或者表的时候,mysql出现报错:
Cannot delete or update a parent row: a foreign key constraint fails
2 解决方法:先关闭外键约束,执行删除操作,然后再开启外键约束
SET foreign_key_checks = 0; // 先设置外键约束检查关闭
drop table mytable; // 删除数据,表或者视图
SET foreign_key_checks = 1; // 开启外键约束检查,以保持表结构完整性
三:MySQL server has gone away错误的解决办法
在我们使用mysql导入大文件sql时可能会报MySQL server has gone away错误,该问题是max_allowed_packet配置的默认值设置太小,只需要相应调大该项的值之后再次导入便能成功。该项的作用是限制mysql服务端接收到的包的大小,因此如果导入的文件过大则可能会超过该项设置的值从而导致导入不成功!下面我们来看一下如何查看以及设置该项的值。
查看 max_allowed_packet 的值
show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
可以看到默认情况下该项的大小只有4M,接下来将该值设置成150M(1024*1024*150)
set global max_allowed_packet=157286400;
此时再查看大小
show global variables like 'max_allowed_packet';
通过调大该值,一般来说再次导入数据量大的sql应该就能成功了,如果任然报错,则继续再调大一些就行,请注意通过在命令行中进行设置只对当前有效,重启mysql服务之后则恢复默认值,但可以通过修改配置文件(可以在配置文件my.cnf中添加max_allowed_packet=150M即可)来达到永久有效的目的,可其实我们并不是经常有这种大量数据的导入操作,所以个人觉得通过命令行使得当前配置生效即可,没有必要修改配置文件。
四:连接mysql,报错”Table performance_schema.session_variables doesn’t exist”
解决办法:
第一步:
进入bin目录下,输入mysql_upgrade -u root -p --force,如下:
[[email protected] /]# cd /usr/bin
[[email protected] bin]# mysql_upgrade -u root -p --force
第二步:重新启动mysql的服务:
service mysql restart
再次运行mysql,就解决了。
造成的这种情况的具体原因是 因为我们在安装pysql的时候,升级了mysql的版本到5.7.18,但是只是升级了mysql的软件包,没有相应的升级数据库的相关表结构。
五:MySQL启动客户端时[Warning]: ignoring option '--no-beep' due to invalid value ''.
修改my.ini
把“=”删除后就好了。
六:mysql source命令如何把日志记录到文件里面
tee 绝对路径\output.log