








要创建一个只能访问特定数据库并具有远程访问权限的 MySQL 用户,可以按照以下步骤操作:
使用 root 用户或具有 CREATE USER 和 GRANT 权限的用户登录 MySQL:
mysql -u root -p
创建一个名为app_user的用户,密码为SecurePass123,允许从任何 IP 地址连接:
CREATE USER 'app_user'@'%' IDENTIFIED BY 'SecurePass123';
授予用户app_user对数据库mydatabase的所有权限:
GRANT ALL PRIVILEGES ON mydatabase.* TO 'app_user'@'%';
如果需要更严格的权限控制,可以只授予必要的权限,例如:
GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.* TO 'app_user'@'%';
使权限立即生效:
FLUSH PRIVILEGES;
切换到新用户并验证是否只能访问指定数据库:
mysql -u app_user -p -h your_server_ip
SHOW DATABASES; # 应该只看到mydatabase和information_schema
USE mydatabase; # 可以访问
USE another_database; # 会报错:Access denied
确保 MySQL 服务器允许远程连接:
修改配置文件
编辑/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu/Debian)或/etc/my.cnf(CentOS/RHEL),注释掉或修改绑定地址:
# 将bind-address修改为0.0.0.0或注释掉此行
# bind-address = 127.0.0.1
重启 MySQL 服务
sudo systemctl restart mysql # Ubuntu/Debian
sudo service mysql restart # CentOS/RHEL
开放 MySQL 端口(默认 3306):
sudo ufw allow 3306/tcp # Ubuntu/Debian
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload # CentOS/RHEL
完成以上步骤后,用户app_user将只能访问mydatabase,并可以从远程连接到 MySQL 服务器。
要撤销 MySQL 用户的 DELETE 和 DROP 权限,可以使用 REVOKE 语句。以下是具体操作步骤:
在撤销权限前,建议先查看用户当前的权限:
SHOW GRANTS FOR 'username'@'host';
根据用户权限的范围,执行以下命令:
撤销对所有数据库的权限
REVOKE DELETE, DROP ON *.* FROM 'username'@'host';
撤销对特定数据库的权限
REVOKE DELETE, DROP ON db_name.* FROM 'username'@'host';
使权限变更立即生效:
FLUSH PRIVILEGES;
mysqldump -u root2 -p hotd_xxxx i5_rewrite_xxxx --no-create-info
这个命令的各个部分含义如下:
mysqldump -u root2 -p hotd_xxx i5_rewrite_xxxx > backup.sql
backup.sql 的内容会包含表结构和数据:
--
-- Table structure for table `i5_rewrite_xxxx`
--
CREATE TABLE `i5_rewrite_xxxx` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(255) DEFAULT NULL,
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--
-- Dumping data for table `i5_rewrite_xxxx`
--
INSERT INTO `i5_rewrite_xxxx` VALUES (1,'https://example.com/1',...);
INSERT INTO `i5_rewrite_xxxx` VALUES (2,'https://example.com/2',...);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。