GreatSQL社区

搜索

[讨论中] 关于GreatSQL 8.0.32-24版本--skip-grant-tables 端口为0的问题

85 5 2024-11-25 16:17
1、使用数据库版本:GreatSQL 8.0.32-24
2、操作系统版本:Linux bogon 4.19.90-9.ky10.aarch64
3、配置文件my.cnf:
[client]
port            = 3308
....无关属性省略
[mysqld]
port            = 3308
....无关属性省略

4、启动命令:./bin/mysqld --defaults-file=my.cnf --user=mysql  --skip-grant-tables
启动日志:

2024-11-25T05:57:10.906709Z 0 [System] [MY-010931] [Server] /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 [System] [MY-011323] [Server] 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

20241125-161639.jpg
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


全部回复(5)
KAiTO 2024-11-25 16:51:51
我是这样理解的,启用了 --skip-grant-tables 意味着可以免密登陆数据库,这对数据库是存在风险的,此时会触发 skip_networking,这样就无法远程登陆,以此来保护数据库安全。这个功能在我看来是没问题的。

如果你要空密码,完全可以自己设置空密码,而不是一直使用 --skip-grant-tables 来启动数据库,这样会使得你的数据库一直处于不安全的状态。


我感觉你应该是有别的用途吧,可以说下你最终想要达到的目的,看看有没有别的方法可以做到。
Sherlock 2024-11-25 17:01:20
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,影响升级过程。
KAiTO 2024-11-25 17:13:53
Sherlock 发表于 2024-11-25 17:01
我目前的场景是:在生产环境通过脚本控制升级产品,升级包中包含了update.sql,这个update.sql是需要在升 ...

用各个实例的mysql.sock登陆呗  mysql -S/data/GreatSQL/mysql.sock  ,不知道是否可行?

不行的话等下看看其它小伙伴有没有更好的方法
Sherlock 2024-11-26 09:43:44
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配合使用时不生效吗
yejr 2024-11-26 10:17:37
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。
Sherlock

1

主题

0

博客

5

贡献

新手上路

Rank: 1

积分
8

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2024-12-4 19:23 , Processed in 0.024212 second(s), 19 queries , Redis On.
快速回复 返回顶部 返回列表