--Windows下MySQL报错-Access denied for user 'root.root'@'localhost'和Incorrect string value-'-xD6-xD0-xB
之前我用flask连接sqlalchemy的时候一直报这两个错:
1、(1045, "Access denied for user 'root.root'@'localhost' (using password: NO)")
2、Warning: Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA...' for column 'VARIABLE_VALUE' at row 480
3、还有一种情况,当你在MySQL的路径下输入mysqld -nt --skip-grant-tables
语句时,也报错说mysqld不是内部或外部命令的话,也可以参考我的方法。
我的是MySQL5.7版本,因为之前各种出错,经大佬指点我去下了的mysql-installer-community-5.7.17.0.msi,链接如下:http://ftp.ntu.edu.tw/MySQL/Downloads/MySQLInstaller/,不是在官网下的,官网的也可以,我之前有装过,但是不知道为什么重装电脑之后就一直出错,密码怎么输都错,可能是之前没卸干净(只能装在C盘的样子)。
然后默认是装在了C盘,然后在C:\Program Files\MySQL\MySQL Server 5.7这个文件下有个my-default.ini文件,里面的代码是这样的:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
mysqld-nt --skip-grant-tables
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
注意了,这里面几乎都被注释了,除了最后一句,这个时候再注意这几行:
# basedir = .....
# datadir = .....
# port = .....
这个时候,在和my-default.ini所在同级目录下新建一个my.ini文件(一定要是ANSI的格式)。
这里要说明一下,MySQL Server 5.7之后的版本不会默认给你一个my-default.ini文件,需要自己手动生成,并且名字改为了my.ini。
我们新建就好了,然后将这几行复制,取消注释:
# basedir = .....
# datadir = .....
# port = .....
改成如下:
# MySQL的msi默认的安装目录,在C盘,建议即便Zip安装包也安在C盘,前车之鉴
basedir = C:/Program Files/MySQL/MySQL Server 5.7/
# 这是数据库的存放位置。
datadir = C:/Program Files/MySQL/MySQL Server 5.7/data/
# 端口
port = 3306
另外,还有注意一点,在Windows下路径的位置要用正斜杠/,如果要用反斜杠\的的话就要用双反斜杠,在Linux下才是\。
然后在MySQL的客户端,或者cmd进入MySQL的安装路径C:\Program Files\MySQL\MySQL Server 5.7\bin下,将MySQL关了重启,
先net stop mysql再net start mysql。如果用的是我上面那个软件的话,你打开MySQL的时候在任务栏会有个图标,restart就好了。
说到这个我想起来,我用那个软件的时候,到了设置Windows server name的时候,默认的名字是MySQL5.7,就是版本名,我开始不知道有什么用,就默认了。
但是后来在输入命令net start mysql的时候报错,这个时候就要输入net start MySQL5.7了,很不习惯。所以为了以防万一,强烈建议修改成mysql。暂时我还没找到MySQL下修改Windows server name的方法,只有SQL的,到时候找到了我再来补吧。
找到了解决办法:
安装mysqld服务的时候:mysqld –install mysql(这个mysql就是你服务的名字,这里可以省略,若省略,命令则为mysqld –install,这样启动的时候,默认还是net start mysql57,但这样改完之后,启动服务的命令就是net start mysql)
这里附上我安装时寻的教程:
http://www.2cto.com/database/201609/545765.html
最后,我的flask连接sqlalchemy时下面依旧报错
Warning: Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA...' for column 'VARIABLE_VALUE' at row 480
,但是我的数据库里可以生成表了,只要能生成表了,似乎就关系不大。
后来找到了方法:就是在my.ini里配置一条:
default-character-set=utf8
本文来自博客园,作者:苏酒酒,转载请注明原文链接:https://www.cnblogs.com/sujiujiu/p/15370033.html