我想让我的 MySql 从属只读,我一直在寻找并找到read_only选项,但它说具有超级权限的用户仍然可以写(如果我正确理解文本),这是我的应用程序的授权:
GRANT RELOAD, PROCESS ON *.* TO 'my_app'@'%' IDENTIFIED BY PASSWORD '*'
GRANT ALL PRIVILEGES ON `my_app`.* TO 'my_app'@'%'
该应用程序是否能够写入从属设备?
我想让我的 MySql 从属只读,我一直在寻找并找到read_only选项,但它说具有超级权限的用户仍然可以写(如果我正确理解文本),这是我的应用程序的授权:
GRANT RELOAD, PROCESS ON *.* TO 'my_app'@'%' IDENTIFIED BY PASSWORD '*'
GRANT ALL PRIVILEGES ON `my_app`.* TO 'my_app'@'%'
该应用程序是否能够写入从属设备?
这是你刚才提到的赠款
基于此,您应该无法写入 Slave,因为SUPER 是系统级权限(SUPER 仅在 mysql.user 中显示为 Super_priv)而不是 DB 级权限(SUPER 未出现在 mysql.db 中)。第一个 GRANT 缺少 SUPER 特权。第二个 GRANT 根本没有 SUPER 特权上下文。
拥有 SUPER 权限具有很大的火力,因为您可以运行以下命令
不是每个用户都需要这个。如果达到 max_connections,则将 SUPER 特权授予任何人实际上会阻碍 DBA 登录 mysql。
对从属的任意或意外更新可能会破坏复制或导致从属与其主控不一致。使从属只读可用于确保从属仅接受来自其主服务器而不是来自客户端的更新;它最大限度地减少了意外更新的可能性。
read_only=1
在您的文件中设置my.cnf/my.ini
以确保从属服务器仅接受来自其主服务器的更新并重新启动您的服务器。此外,我认为您应该避免为其他 MySQL 用户提供不必要
SUPER
的特权以确保安全。