Mysql8.0.15相关命令

一.忘记root密码,需跳过权限验证时

说明:根据网络资料,可以在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,登录成功

 

二.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。

三.如遇到BLOB, TEXT, GEOMETRY or JSON column 'description' can't have a default value错误

原因: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

你可能感兴趣的:(学习笔记)