扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
我遇到同样的错误,折腾了好久才摸索出来。网上的解决办法都试过了,没有确实可行的。最终总结出来,终于解决了。
“专业、务实、高效、创新、把客户的事当成自己的事”是我们每一个人一直以来坚持追求的企业文化。 创新互联建站是您可以信赖的网站建设服务商、专业的互联网服务提供商! 专注于网站建设、成都做网站、软件开发、设计服务业务。我们始终坚持以客户需求为导向,结合用户体验与视觉传达,提供有针对性的项目解决方案,提供专业性的建议,创新互联建站将不断地超越自我,追逐市场,引领市场!
我的下载的是mysql-5.7.9绿色版出的问题。最终解决过程供你参考:
1、下载的mysql-5.7.9,出现你的问题。试了各种办法无法解决。有网友说mysql-5.7.9版本有问题。我改下载了5.6.27版本,尝试不成功。但报错变为:无法启动mysql服务,发生错误1067。解决办法:my.ini 添加 tmpdir = D:\mysql-5.6.27-winx64\data。问题解决。
2、后来我对比了mysql-5.7.9与5.6.27,发现mysql-5.7.9-winx64没有data目录,mysql-5.6.27-winx64\data\mysql,存了不少数据文件。原来调试5.7.9的版本时,记得日志报告一直有mysql.user、mysql.plugin不存在的提示。(原以为这些文件会自动生成)。后来把这个mysql-5.6.27-winx64\data下的mysql文件夹整个复制到5.7.9版本中的同目录下。问题解决。
错误如下:1045 Access denied for user 'root'@'localhost' (using password:YES)
想起来有可是在navicat添加的root@'%'用户,可能密码和现在新版本5.7的加密不同了,导致密码不对.
所以解决方法是更新用户密码.
注意5.7版本密码保存的列是 authentication_string ,密码要用函数password加密.
更新密码的SQL是 update user set authentication_string=password('密码') where user="root";
下面是Windows平台下操作步骤:
配置文件my.ini ,在mysqld下面添加skip-grant-tables,意思是可以直接回车登录,保存退出。重启mySQL,然后运行cmd
输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入。
1.切换到mysql数据库:use mysql;
2.给root用户设置新密码,
mysql update user set authentication_string=password('密码') where user="root";
3.刷新数据库mysql flush privileges;
4.再修改my.ini,把刚加入的"skip-grant-tables"这行删除或者添加#注释,保存退出再重启mysql服务就可以了。
一些参考命令
#删除之前配置 drop user 'root' @ '%' ;
#配置远程登录 CREATE USER 'root' @ '%' IDENTIFIED BY password( '你的密码') ;
#授权 GRANT ALL ON *.* TO 'root' @ '%' ;
#更新权限 flush privileges;
#查看用户,主机,加密方法 select user,host,plugin from user;
1、可能是/opt/mysql-master/data/数据目录mysql用户没有权限(修改数据目录的权限)
解决方法 :给予权限,执行 "chown -R mysql.mysql /opt/mysql-master/data" 然后重新启动mysqld
2、可能进程里已经存在mysql进程
解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!
3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的二进制日志目录看看,如果存在mysql-binlog.index,就赶快把它删除掉吧
4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /opt/mysql-master/data
5、skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。
6、错误日志目录不存在
解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限
7、selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:
先临时改为警告模式:[root@www php]# setenforce 0然后打开/etc/sysconfig/selinux,把SELINUX=enforcing改为SELINUX=disabled
8、可以试着把mysql.cnf默认文件开启,排查是不是配置文件的错误。
常见配置错误有:
查看配置文件/etc/my.cnf里有没有innodb_buffer_pool_size这个参数
innodb_buffer_pool_size:主要作用是缓存innodb表的索引,数据,插入数据时的缓冲;
默认值:128M;专用mysql服务器设置此值的大小: 系统内存的70%-80%最佳。如果你的系统内存不大,查看这个参数,把它的值设置小一点吧
温馨提示:记得开启mysql错误日志,方便自己排错。
vim /etc/my.cnf 各位可以根据自己的my.cnf文件编辑[mysql_safe]
log-error = /data/mysql-master/logs/error.log
1.停止mysql服务:
右键点击“我的电脑”图标,出现右键菜单后左键点击“管理”。弹出“电脑管理”对话框后,左键点击“服务与程序”,接着点击“服务”,最后找到mysql服务并将其关闭。
2.进入控制面板,点击卸载程序,进入卸载程序对话框后卸载mysql。
3.组合键W+R进入运行,输入“regedit”,查看下面 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的键值,将mysql键值(mysql、mysqladmin)删掉 。
4.重启系统。
5.再次安装mysql程序。
flask中向mysql中数据操作会出现字符集的问题,比如创建数据模型:db.create_all()时,控制台会出现warring 1366 的字符集警告,是这样的:
这个异常是mysql问题,而非python的问题,这是因为mysql的字段类型是utf-xxx, 而在mysql中这些utf-8数据类型只能存储最多三个字节的字符,而存不了包含四个字节的字符。
解决方法:
修改mysql数据表的字段类型为utf8mb4,只有在mysql5.5之后可以支持。
在flask配置中设置字符集:
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@127.0.0.1:3306/test?charset=utf8"
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流