网站开发公司运营流程,网站开发都有什么端,谷歌搜索入口中文,做静态网站选用什么服务器背景#xff1a;原先数据配置文件中有bind-address127.0.0.1#xff0c;注释掉此配置后#xff0c;原数据库中默认带%root的权限#xff0c;现在需要通过脚本实现白名单列表中的ip添加权限允许访问数据库#xff0c;白名单之外的ip没有权限访问数据库。 以下是过程中记录的…背景原先数据配置文件中有bind-address127.0.0.1注释掉此配置后原数据库中默认带%root的权限现在需要通过脚本实现白名单列表中的ip添加权限允许访问数据库白名单之外的ip没有权限访问数据库。 以下是过程中记录的一些问题。
1、能否直接通过将%root替换成白名单中iproot权限
答不能。
在 MySQL 中无法将 %root 直接更新为 whitelisted_iproot 的权限。权限授予是基于用户和主机的而不是根据特定的用户和权限项。这意味着不能直接更改权限项的主机部分。 相反应该创建一个新的用户并仅授予该用户特定主机的访问权限。然后撤销原始的 %root 用户的权限以确保只有指定白名单中的 IP 地址能够访问数据库。 因此在 MySQL 中创建新用户并设置仅限白名单 IP 地址访问数据库然后删除默认的 %root 用户权限是最安全和推荐的做法。
2、WITH GRANT OPTION 参数使用
WITH GRANT OPTION 是 MySQL 权限系统中的一种选项它允许授予的用户将他们拥有的权限授予其他用户即委派权限。具体而言当你向用户授予权限时可以选择是否包括 WITH GRANT OPTION其含义如下 授予权限授予权限意味着该用户可以执行被授予的操作例如 SELECT、INSERT、UPDATE 等。 WITH GRANT OPTION如果同时指定了 WITH GRANT OPTION则被授予权限的用户除了可以执行这些操作外还可以将相同的权限授予其他用户即委派权限。 换句话说具有 WITH GRANT OPTION 权限的用户可以再次使用 GRANT 命令将他们拥有的权限授予给其他用户而不需要直接访问权限的所有者。这样的设置可以在需要委派权限给其他用户时非常有用。但同时也要注意授予 WITH GRANT OPTION 权限可能增加安全风险因为权限可能会被滥用或误用。 因此在为用户分配权限时应谨慎考虑是否使用 WITH GRANT OPTION并确保了解委派权限可能带来的安全影响。
3、执行 REVOKE ALL PRIVILEGES ON . FROM ‘root’‘%’;后为什么查询user表依然包含此用户信息
当使用 REVOKE ALL PRIVILEGES ON *.* FROM root%; 命令来撤销 root% 用户的所有权限时这只是取消了该用户对数据库的访问权限并没有删除该用户的账户信息。因此即使撤销了 root% 的权限仍然可以在 mysql.user 表中查询到该用户的记录。 要完全删除 root% 用户的账户信息可以使用以下步骤
-- 使用 REVOKE 命令撤销 root% 用户的所有权限
REVOKE ALL PRIVILEGES ON *.* FROM root%;
FLUSH PRIVILEGES;--- 删除 root% 用户的账户
DROP USER root%;通过上述步骤可以撤销 root% 用户的所有权限并从 mysql.user 表中删除该用户的账户信息。 请注意删除 root% 用户可能会影响到数据库的管理和维护因此在执行此操作之前请确保有其他具备管理员权限的用户账户。
4、部分细节参考
添加用户权限时如果用户权限不存在才添加 删除用户权限时如果用户权限存在则删除 不做添加删除判断可能会执行报错。 数据连接相关信息存储在一个配置文件中test_config.sh
test_config.sh文件参考
#!/bin/bashexport DBCMD/usr/local/Test/database/bin/mysql
export DBUSERroot
export DBPWD123456
export DBHOST127.0.0.1
export DBPORT3306
export WHITEIP192.168.22.1test_permission.sh文件参考
#!/bin/bash
pushd dirname $0 /dev/null 21. test_config.sh# 检查白名单用户权限是否存在
existing_user$DBCMD -u$DBUSER -p$DBPWD -P$DBPORT -h$DBHOST -Ns -e SELECT user FROM mysql.user WHERE userroot AND host${WHITEIP}
if [ -z $existing_user ]; then# 如果用户权限不存在则添加权限$DBCMD -u$DBUSER -p$DBPWD -P$DBPORT -h$DBHOST -e create user root${WHITEIP} identified by 123456;grant all privileges on *.* to root${WHITEIP} identified by 123456 with GRANT OPTION;flush privileges;# 记录时间、输出到日志文件echo date %F %T ${WHITEIP} grant all privileges ../test.log
elseecho date %F %T ${WHITEIP} is exist, no need to add ../test.log
fi# 检查root%用户权限是否存在
existing_user$DBCMD -u$DBUSER -p$DBPWD -P$DBPORT -h $DBHOST -Ns -e SELECT user FROM mysql.user WHERE userroot AND host%
if [ -z $existing_user ]; thenecho date %F %T root% is not exist, no need to del ../test.log
else# 如果用户权限存在则删除权限$DBCMD -u$DBUSER -p$DBPWD -P$DBPORT -h$DBHOST -e REVOKE ALL PRIVILEGES, GRANT OPTION FROM root%;DROP USER root%;flush privileges;echo date %F %T root% rmvoke all privileges ../test.log
fipopd /dev/null 21