nacos: 坑, 用户名或密码不正确
一丶错误演示 {#content_views}

默认用户名和密码都是nacos但显示错误。
二丶解决 (原因:nacos-mysql.sql脚本执行不完整)
1. 登录SQLyog查看nacos_config库里的users表和roles表里是否有记录(Linux的话直接进去nacos_config库查这两个表有没有记录)(如果连nacos_config这个库都没有那就是sql脚本还没执行过,先去数据库里执行nacos提供的nacos-mysql.sql脚本,在nacos/conf/目录下)


如果nacos_mysql.sql脚本执行正确,以上users和roles表会有记录,如果没有说明nacos_mysql.sql执行有问题你没发现而已,因为nacos_mysql.sql最后两行还执行了插入语句也就是以上两条插入记录。

如果自行看一下表结构,会发现permissions表也不存在,所以推断问题可能出在执行sql文件到CREATE TABLE permissions时出现了错误,下面新建数据库重新导入sql进行一次测试



好好好,演我是吧,这次没出问题
咳咳,其实官方给出的sql文件本身是没有问题的,问题出在我导入的是RuoYi-Cloud框架提供的sql,出现了下面的错误


问题确实出在执行到CREATE TABLE permissions时出现错误[ERR] 1071 - Specified key was too long; max key length is 1000 bytes

2. 解决:
进入数据库nacos_config数据库执行这两条插入语句即可, 之后重启nacos服务就可以登录了。
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');
当然这还没完,permissions表还没创建呢,执行这条插入语句即可
CREATE TABLE `permissions` (
`role` varchar(50) NOT NULL,
`resource` varchar(192) NOT NULL,
`action` varchar(8) NOT NULL,
UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);

这并不是最佳的解决方法,盲猜导致这个问题的原因是RuoYi提供的sql文件中,存在一些问题,仔细对比官方和RuoYi提供的sql文件后发现,唯一的区别在于文件头RuoYi加入了创建数据库命令,数据库编码采用的 utf8mb4 ,而在上面进行测试时,默认数据库编码是utf8—utf8_unicode_ci,所以是成功了。
所以尝试使用utf8数据库编码,尝试导入RuoYi提供的sql文件



成功执行
为了控制变量保持测试的严谨性,尝试将官方的sql导入utf8mb4编码的数据库




如预料一般的失败

最后,建议大家使用utf8编码的数据库执行nacos_config.sql
更多推荐
所有评论(0)