关于GreatSQL 8.0.32-24版本--skip-grant-tables 端口为0的问题
1、使用数据库版本:GreatSQL 8.0.32-242、操作系统版本:Linux bogon 4.19.90-9.ky10.aarch64
3、配置文件my.cnf:
port = 3308
....无关属性省略
port = 3308
....无关属性省略
4、启动命令:./bin/mysqld --defaults-file=my.cnf --user=mysql--skip-grant-tables
启动日志:
2024-11-25T05:57:10.906709Z 0 /database/bin/mysqld: ready for connections. Version: '8.0.32-24'socket: '/tmp/mysql.sock'port: 0 GreatSQL, Release 24, Revision 3714067bc8c.
2024-11-25T05:57:10.908089Z 0 X Plugin ready for connections. Socket: /tmp/mysqlx.sock
发现这里的port是0,登录root用户查询发现:
mysql> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 0 |
+---------------+-------+
1 row in set (0.01 sec)
这里端口号确实是0
再次查询skip_networking属性发现是打开状态
mysql> show variables like '%networking%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | ON |
+-----------------+-------+
1 row in set (0.02 sec)
根据查询MySQL文档发现是添加--skip-grant-tables之后导致自动开启了skip_networking
5、问题:
在已知添加--skip-grant-tables会自动开启skip_networking的前提下,不论在my.cnf中添加skip_networking=OFF属性还是在启动命令后添加--skip_networking=0都无法生效,无法让GreatSQL 8.0.32-24 监听我配置文件中的3308端口,这里的skip_networking是强制无法修改吗?而同样基于MariaDB 10.6.18启动时,skip_networking不会隐式开启,只有显示开启才会生效,即仅设置--skip-grant-tables 时,启动之后监听端口是配置文件中或自己指定的端口,而非端口0
我是这样理解的,启用了 --skip-grant-tables 意味着可以免密登陆数据库,这对数据库是存在风险的,此时会触发 skip_networking,这样就无法远程登陆,以此来保护数据库安全。这个功能在我看来是没问题的。
如果你要空密码,完全可以自己设置空密码,而不是一直使用 --skip-grant-tables 来启动数据库,这样会使得你的数据库一直处于不安全的状态。
我感觉你应该是有别的用途吧,可以说下你最终想要达到的目的,看看有没有别的方法可以做到。
KAiTO 发表于 2024-11-25 16:51
我是这样理解的,启用了 --skip-grant-tables 意味着可以免密登陆数据库,这对数据库是存在风险的,此时会 ...
我目前的场景是:在生产环境通过脚本控制升级产品,升级包中包含了update.sql,这个update.sql是需要在升级阶段执行的,但问题是各个环境的root用户密码是无法得知的,因此采用--skip-grant-tables的形式进行数据库脚本的升级,我们使用MariaDB时,可通过--skip-grant-tables跳过认证来执行update.sql,而在使用GreatSQL 8.0.32-24时,跳过认证则端口会强制变为0,影响升级过程。 Sherlock 发表于 2024-11-25 17:01
我目前的场景是:在生产环境通过脚本控制升级产品,升级包中包含了update.sql,这个update.sql是需要在升 ...
用各个实例的mysql.sock登陆呗mysql -S/data/GreatSQL/mysql.sock,不知道是否可行?
不行的话等下看看其它小伙伴有没有更好的方法:lol
KAiTO 发表于 2024-11-25 17:13
用各个实例的mysql.sock登陆呗mysql -S/data/GreatSQL/mysql.sock,不知道是否可行?
不行的话等下看 ...
我想了解下,GreatSQL 8.0.32-24的--skip-grant-tables和MariaDB 10.6.18版本的--skip-grant-tables效果为什么不一样,是单独做了特殊处理才导致--skip_networking与--skip-grant-tables配合使用时不生效吗 Sherlock 发表于 2024-11-26 09:43
我想了解下,GreatSQL 8.0.32-24的--skip-grant-tables和MariaDB 10.6.18版本的--skip-grant-tables效果 ...
如文档所述,在GreatSQL/MySQL中,基于安全考虑,开启 skip-grant-tables 后,也会强制启用 skip_networking。注意,这是从8.0版本开始才这样,在5.6和5.7中,还不会。
你也提到在MariaDB中开启 skip-grant-tables 后,不会强制启用 skip_networking,这有可能是MariaDB从MySQL fork出去后,还保持着旧的行为模式,没有像MySQL/GreatSQL那样从 8.0 版本开始做出安全调整。
更具体的信息,翻看相应的用户手册就可以。
另外,更建议使用MySQL/GreatSQL,而不建议使用MariaDB。
页:
[1]