惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
博客园 - 【当耐特】
D
Docker
Y
Y Combinator Blog
L
LangChain Blog
博客园 - 三生石上(FineUI控件)
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
F
Fortinet All Blogs
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
B
Blog
The GitHub Blog
The GitHub Blog
腾讯CDC
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
爱范儿
爱范儿
A
About on SuperTechFans
量子位
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

博客园 - Lafite-1820

linux 常用的命令 mac m1 使用vpn之后浏览器连不上网处理 - Lafite-1820 Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!! 5分钟搭建完整后端服务,这款开源的快速开发神器太牛了! 高并发IoT监控系统的Go实践:Goroutine池设计与并发安全指南 服务器设置成美国时间 Linux crond nginx 配置 mysql mac m1 报错处理 PostgreSQL 为什么不选择 B+ 树索引? 秒杀系统的架构(Golang 实现) nginx 配置 git 突然 403 Vue 项目接入Google第三方登录的详细流程 [HY000][1366] Incorrect string value: '\xF0\x9F\x8C\x9F",...' ; - Lafite-1820 mac 外接硬盘系统软件 linux 常用命令 crontab 半小时执行一次 mac berw 安装deepseek linux mv 限时文件个数
mysql 添加账号
Lafite-1820 · 2025-07-08 · via 博客园 - Lafite-1820

要创建一个只能访问特定数据库并具有远程访问权限的 MySQL 用户,可以按照以下步骤操作:

1. 登录 MySQL

使用 root 用户或具有 CREATE USER 和 GRANT 权限的用户登录 MySQL:

mysql -u root -p

2. 创建新用户

创建一个名为app_user的用户,密码为SecurePass123,允许从任何 IP 地址连接:

CREATE USER 'app_user'@'%' IDENTIFIED BY 'SecurePass123';

3. 授予特定数据库权限

授予用户app_user对数据库mydatabase的所有权限:

GRANT ALL PRIVILEGES ON mydatabase.* TO 'app_user'@'%';

如果需要更严格的权限控制,可以只授予必要的权限,例如:

GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.* TO 'app_user'@'%';

4. 刷新权限

使权限立即生效:

FLUSH PRIVILEGES;

5. 验证用户权限

切换到新用户并验证是否只能访问指定数据库:

mysql -u app_user -p -h your_server_ip
SHOW DATABASES;  # 应该只看到mydatabase和information_schema
USE mydatabase;  # 可以访问
USE another_database;  # 会报错:Access denied

6. 配置 MySQL 远程访问(如果需要)

确保 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

7. 配置防火墙(如果需要)

开放 MySQL 端口(默认 3306):

sudo ufw allow 3306/tcp  # Ubuntu/Debian
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload  # CentOS/RHEL

安全建议

  • 使用强密码并定期更换
  • 限制用户的 IP 访问范围,例如:'app_user'@'192.168.1.%'
  • 定期审计用户权限
  • 生产环境建议使用 SSH 隧道代替直接开放 3306 端口

完成以上步骤后,用户app_user将只能访问mydatabase,并可以从远程连接到 MySQL 服务器。

要撤销 MySQL 用户的 DELETE 和 DROP 权限,可以使用 REVOKE 语句。以下是具体操作步骤:

1. 查看用户当前权限

在撤销权限前,建议先查看用户当前的权限:

SHOW GRANTS FOR 'username'@'host';
  • username:要修改权限的用户名。
  • host:用户的连接主机(例如 '%' 表示任意主机,'localhost' 表示本地连接)。

2. 撤销 DELETE 和 DROP 权限

根据用户权限的范围,执行以下命令:

撤销对所有数据库的权限

REVOKE DELETE, DROP ON *.* FROM 'username'@'host';

撤销对特定数据库的权限

REVOKE DELETE, DROP ON db_name.* FROM 'username'@'host';
  • db_name:数据库名(例如 mydatabase)。

3. 刷新权限

使权限变更立即生效:

FLUSH PRIVILEGES;

导出数据表

mysqldump -u root2 -p hotd_xxxx i5_rewrite_xxxx --no-create-info

这个命令的各个部分含义如下:

  • -u root2:以用户 root2 的身份连接到 MySQL。
  • -p:提示输入密码。
  • hotd_xxxx:数据库名。
  • i5_rewrite_xxxx:表名。
  • --no-create-info:只导出表中的数据,不导出表结构。

对比示例

1. 不带 --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',...);