--Windows下MySQL报错-Access denied for user 'root.root'@'localhost'和Incorrect string value-'-xD6-xD0-xB

来源:互联网 发布:ubuntu用vim写脚本 编辑:程序博客网 时间:2024/04/30 15:00

之前我用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
另外,还有一种情况,当你在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:\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文件。

这里要说明一下,如果有和我一样的童鞋们请注意,由于我之前在C:\ProgramData\MySQL\MySQL Server 5.7这个目录下也找到一个my.ini,导致我以为是这个,但是不敢改,因为里面没有bin目录,这个应该是安装MySQL自动生成在C盘的文件,所以不要乱动。

我们新建就好了,然后将这几行复制,取消注释:

 # basedir = ..... # datadir = ..... # port = .....

改成如下:

basedir = C:/Program Files/MySQL/MySQL Server 5.7/datadir = C:/Program Files/MySQL/MySQL Server 5.7/data/port = 3306

第一个就是你MySQL的安装目录,这是我的安装目录,我本不想装在C盘,但是不知为何原先装在F盘总是报错。
第二个是数据文件,你在和bin的同级目录下新建一个data文件夹,这是数据库的存放位置。
第三个就是数据库的端口,不用我解释了。

另外,还有注意一点,在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的,到时候找到了我再来补吧。

这里附上我安装时寻的教程:
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

,但是我的数据库里可以生成表了,只要能生成表了,似乎就关系不大。

0 0
原创粉丝点击