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
posted @ 2022-04-29 14:29  王猪猴  阅读(160)  评论(0编辑  收藏  举报