自动化数据库Grant流程可以通过编写脚本和使用自动化工具来实现,以下是一些常见的方法和步骤:
#!/bin/bash
# MySQL数据库用户权限管理
# 定义全局变量
MYSQLCMD="/usr/local/mysql/bin/mysql"
# 声明添加用户授权函数
function add_auth() {
read -p 'Port: ' add_auth[0]
read -p 'DB [db.* db.t1]: ' add_auth[1]
read -p 'Permisions [SELECT,UPDATE...]: ' add_auth[2]
read -p "Authorized to host's IP: " add_auth[3]
read -s -p 'Username: ' add_auth[4]
read -s -p 'Password: ' add_auth[5]
# 隐藏密码回显
export MYSQL_PWD=$add_auth[5]
# 定义局部参数变量
PORT=${add_auth[0]}
DB=${add_auth[1]}
LIMITS=${add_auth[2]}
IP=${add_auth[3]}
USERNAME=${add_auth[4]}
PASSWD=${add_auth[5]}
SOCKT="/tmp/mysql${PORT}.sock"
# 授权
$MYSQLCMD -S $SOCKT -e "grant $LIMITS on ${DB}.* to \"${USERNAME}\"@\"${IP}\" identified by \"${PASSWD}\";" && ret10
$MYSQLCMD -S $SOCKT -e "FLUSH PRIVILEGES;" && ret20
if [ $ret1 -eq 0 ] && [ $ret2 -eq 0 ]; then
echo -e "\n\033[32;49;1m Successfully Authorized for user ${USERNAME}. \033[39;49;0m"
fi
}
# 声明撤销用户权限函数
function drop_user() {
read -p 'Port: ' revoke_auth[0]
read -p 'Need to revoke username: ' revoke_auth[1]
read -p 'Revoke Host: ' revoke_auth[2]
PORT=${revoke_auth[0]}
USERNAME=${revoke_auth[1]}
HOST=${revoke_auth[2]}
SOCKT="/tmp/mysql${PORT}.sock"
$MYSQLCMD -S $SOCKT -e "drop user ${USERNAME}@\"${HOST}\";" && ret10
$MYSQLCMD -S $SOCKT -e "FLUSH PRIVILEGES;" && ret20
if [ $ret1 -eq 0 ] && [ $ret2 -eq 0 ]; then
echo -e "\n\033[32;49;1m Successfully revoked user ${USERNAME}. \033[39;49;0m"
fi
}
# 读取用户输入,判断添加用户授权OR撤销用户
read -p 'Add or revoke the Authorization? [ add drop ] ' n
case $n in
'add')
add_auth
;;
'drop')
drop_user
;;
*)
echo "Select: add or drop"
esac
}
mysql-connector-python
库来连接到MySQL服务器,创建新用户,并赋予新用户对特定数据库的所有权限:import mysql.connector
from mysql.connector import Error
def create_user(host_name, user_name, user_password, new_user_name, new_user_password, db_name):
try:
# 创建数据库连接
connection = mysql.connector.connect(
host=host_name,
user=user_name,
passwd=user_password
)
cursor = connection.cursor()
# 创建新用户
cursor.execute(f"CREATE USER '{new_user_name}'@'localhost' IDENTIFIED BY '{new_user_password}'")
# 授予新用户对指定数据库的所有权限
cursor.execute(f"GRANT ALL PRIVILEGES ON {db_name}.* TO '{new_user_name}'@'localhost';")
# 提交修改
connection.commit()
print(f"User {new_user_name} created successfully.")
except Error as e:
print(f"Error: '{e}'")
finally:
# 关闭数据库连接
cursor.close()
connection.close()
# 使用你的MySQL服务器详细信息替换下面的值
host_name = "localhost"
user_name = "root"
user_password = "rootpassword"
new_user_name = "newuser"
new_user_password = "newpassword"
db_name = "mydatabase"
create_user(host_name, user_name, user_password, new_user_name, new_user_password, db_name)
通过上述方法,可以实现数据库Grant流程的自动化,提高工作效率并减少人为错误。在选择自动化方案时,应根据具体需求和环境进行选择和配置。
亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。