nestjs部署数据库问题
Access denied for user 'root'@'localhost' (using password: YES)
1、关闭mysql服务
systemctl stop mysqld.service
2、找到/etc/my.cnf ,在最后一行添加skip-grant-tables(用于免密码登录)
vi /etc/my.cnf
3、重启mysql服务
systemctl restart mysqld.service
4、正常登录mysql(不使用密码)
mysql -u root
5、刷新权限
flush privileges;
6、修改密码
alter user 'root'@''%'' IDENTIFIED BY 'MyNewPass@123';(mysql8.0以上密码策略限制必须要大小写加数字特殊符号,否则会报错)
7、找到/etc/my.cnf ,删除skip-grant-table
8、重启mysql服务
systemctl restart mysqld.service
9、正常登录测试
mysql -u root -p
Error: ER_NOT_SUPPORTED_AUTH_MODE
原因:登录数据库的客户端跟mysql8.0不兼容了,mysql8.0密码认证采用了新的密码格式
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'password';
Query OK, 0 rows affected (0.27 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.08 sec)
BLOB/TEXT column 'xxxxxx( 表名称)' can't have a default value query
原因:
Create table的时候,报错BLOB/TEXT column 'xxxxxx( 表名称)' can't have a default value query ,意思是TEXT类型的表字段不能够有默认值。
搜索到很多解决方案都是将
description TEXT DEFAULT 'www.sharkuo.com', 改为 description TEXT,
原因在于:
1、 MYSQL5.x是不允许BLOB/TEXT类型的字段拥有默认值的。
2、 由于MYSQL是在‘strict mode’严格模式下工作的,如果改为非严格模式,上面的语句就可以执行成功
3、 MYSQL5.x在windows下是默认以‘strict mode’工作的,当执行上面的语句时,会给你一个错误或者警告信息
解决方法:
1、 找到mysql安装根目录下的my.ini文件
2、 找到这样一行:
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
3、 在其前面加‘#’将其注释掉:
#sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
4、 重启mysql服务
5、 重新执行你的mysql语句
mysql建表插入数据
show databases;
use xxx;
source test.sql