说明:根据网络资料,可以在my.ini文件下加入skip-grant-tables,然后重新启动服务,即可跳过权限验证登录。但是本文Mysql版本是8.0.15,一旦加入命令,重启服务成功,但是登录时mysql -uroot -p会报错ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061),多次尝试可以确定该错误是由于上述原因导致的。
解决方法:
根据版本号搜索到的解决方案--->
【服务关闭的情况下,关闭服务命令net stop mysql】
主要是将跳过权限的命令更换了 mysqld --console --skip-grant-tables --shared-memory
执行完命令后,光标一直闪烁,不要关闭当前CMD窗口,重新以管理员身份打开一个命令窗口
免密登陆,命令mysql,登录成功
Windows下每一个执行命令敲完需要执行的话,在命令后需要加分号(;)
查看数据库: show databases;
使用数据库: use databasename;
查看当前数据库下拥有的所有表: show tables
查看数据库表属性定义: desc tablename; 或者 describe tablename;
修改root用户密码:alter user 'root'@'localhost'IDENTIFIED BY 'new_password';
[啰嗦一下:关于修改root密码的命令,除了这一条之外,还有其他,根据试用结果说明:
1. mysqladmin -u root -p[oldpass] password newpass
结果:game over,可能使用了该条命令没有正常执行完,然后推出了数据库,导致后面mysql死活登录不上去,才有了“一”的解决办法
2. UPDATE user SET password=PASSWORD("new_password") WHERE user='root';
结果:提示信息为 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("root") WHERE User='root'' at line 1
mysql默认对大小写不敏感,虽然通过查看user表字段名,用户为User,也进行了修改(没有找到password字段),但是仍然报错,不明白,无解,可能与password字段有关?该版本密码存储字段authentication_string
]
如果在pycharm连接不上数据库,出现1251错误;
django.db.utils.InternalError: (1251, u'Client does not support authentication protocol requested by server; consider upgrading MySQL client')
可尝试修改数据库验证方式:
1.打开CMD(为避免不必要的错误,可以使用管理员权限打开)
2.登录本地Mysql,mysql -u用户名 -p密码[用户名,密码请自行替换]
3.alter user '用户名'@localhost IDENTIFIED WITH mysql_native_password by '你的密码';
【如果执行语句没有报错,恭喜你,离成功又进了一步】
4.退出Mysql,命令\q,关闭CMD
原因:详见关于mysql8.0安装以及配置navicat的问题
安装过程中的Authentication Method这一配置过程,基于不同的加密方式,如果选择第一种强加密,就会出现我之前描述的现象;
修改验证方式,即保留旧有的加密方式,就可以从server访问Mysql。
原因:MySQL运行默认严格模式,严格模式下执行要求请自行搜索
说明:对于WIndows系统,如果你的my.Ini配置文件中没有设置sql-mode字段,MySQL也默认运行在严格模式下;
不要按照搜索到的命令直接在配置文件中修改或添加sql-mode字段的值,否则重启MySQL会出现没有任何错误就是启动不了的尴尬情况
解决方法:
1.关闭mysql服务,window命令net stop mysql
2.进入MySQL,mysql>select @@sql_mode;,查看当前安装版本支持的模式有哪些,其中STRICT_TRANS_TABLES是严格模式的属性名
3.在MySQL配置文件中,将严格模式属性名从sql_mode属性值中删去;
4.进入MySQL安装目录的bin目录下,执行mysql --initialize【必须】
5.重启mysql服务,net stop mysql