学习Ubuntu MariaDB权限设置,能快速提升数据库管理技能吗?这样的方法高效吗?
- 内容介绍
- 文章标签
- 相关推荐
在使用 Ubuntu 上的 MariaDB 时许多管理员都会遇到安装不完整、权限不对齐还有远程访问被拒绝等痛点。下面按步骤拆解常见难题,并给出一套高效的方法,方便你提高数据库管理技能。按理说,
一、基础准备与安装
如果你刚接触 MariaDB。要确认程序已更新而且安装了服务器和客户端:
sudo apt update
sudo apt install mariadb-server mariadb-client
说到常见痛点,“apt 安装后提示缺少依赖”。这通常是因为软件源没有同步。怎么说呢,执行 sudo apt update 再重试即可。
二、开启服务并设置开机自启
安装完成后启动 MariaDB 并让其随程序自动启动:
sudo systemctl start mariadb
sudo systemctl enable mariadb
如果看到 Unit mariadb.service not found. 错误,请检查 /etc/systemd/system/mariadb.service.d/override.conf 是否存在。
1. 登录 MariaDB 控制台
Mysql 客户端默认以 root 使用者登录,但在 Ubuntu 上 root 默认使用插件 unix_socket,需要先切换密码或使用 sudo 登录:
# 用程序使用者身份直接登录
sudo mysql -u root
# 或者改为传统密码验证
sudo mysql_secure_installation
2. 防火墙允许 MySQL 访问
If you are using UFW:
# 开放默认端口3306
sudo ufw allow mysql/tcp
# 或者指定 IP 范围。例如仅允许内部网 IP
sudo ufw allow from 192.168.0.0/24 to any port 3306 proto tcp
三、文件程序与权限配置
Mysql 数据目录默认位于 /var/lib/mysql。确保目录归属正确,以防止因权限导致的数据读写失败:
# 修正所有权
sudo chown -R mysql:mysql /var/lib/mysql
# 确认权限至少是750
find /var/lib/mysql -type d -exec chmod 750 {} \;其实,find /var/lib/mysql -type f -exec chmod 640 {} \;
四、使用者管理与权限授予
Mysql 权限最关键的是"谁能做什么"。
A. 创建新使用者并授予特定数据库权限
# 创建使用者,仅限本机连接,并设置密码
CREATE USER 'alice'@'localhost' IDENTIFIED BY 'StrongPass!23',# 授予 SELECT 与 INSERT 权限到指定数据库
GRANT SELECT,INSERT ON mydb.* TO 'alice'@'localhost';FLUSH PRIVILEGES;
B. 授予全局管理员权限
# 给某使用者全局 ALL 权限,并可授予他人其他使用者权限
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;按理说,FLUSH PRIVILEGES;不过,
C. 撤销或删除使用者的权限/账号
- 撤销单条权限:
# 撤销所有对 mydb 的 SELECT 与 INSERT 权限
REVOKE SELECT。INSERT ON mydb.* FROM 'alice'@'localhost';FLUSH PRIVILEGES;
DROP USER 'alice'@'localhost';FLUSH PRIVILEGES;
再看注意。直接 DROP USER 会把该账号所有的授权全部消失,请确认无误后再执行。
五、远程访问配置与安全强化
至于痛点。默认只监听本地回环地址,导致外部无法连接。
A. 修改监听地址为全网通用
cat /dev/null bind-address = 0.0.0.0 EOF # 重新启动使改动生效 sudo systemctl restart mariadb EOF
B. 强化 root 使用者登录方式
- 禁用 MySQL root 密码登录,只允许 UNIX socket 验证。
- 示例命令: ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
- 如果需要网络访问。可创建一个专门的 admin 使用者,并赋予必要的特权。
C.FW 调整以支持远程连接
sudo ufw allow from 10.x.x.x/24 to any port 3306 proto tcp EOF
六、性能监控与日志排查技巧
- 查看慢查询日志:
监控实时查询状态:
| User Name & Hostname | Process ID | State | Query Time | Info |
|---|
请根据实际环境替换 php 部分或直接手工执行上述命令。
常见错误排查:
- * “Access denied for user ‘username’@‘ip’” – 检查 GRANT 是否包含相应 IP; 若使用 '%' 则需确保防火墙已放行; 若使用具体 IP,则必须对应主机地址。老实说,
/var/log/mysql/error.log最常见原因是硬盘空间不足或内存不足导致崩溃。小结的观点是,快速提高 MariaDB 管理技能
1️⃣ 先把环境搞定更新 → 安装 → 启动 → 自启 2️⃣ 合理划分账户root 用于维护;业务账户只授必要权限 3️⃣ 文件程序 + SELinux/AppArmor 必须匹配 4️⃣ 防火墙 + bind-address 明确允许哪些 IP 5️⃣ 日志 & 性能监控 成功运维少不了
掌握以上步骤。你就能从“新手卡壳”迈向“熟练掌控”,在实际项目中迅速定位和处理问题,从而明显提高工作效率。老实说,祝你玩转 MariaDB 🚀
在使用 Ubuntu 上的 MariaDB 时许多管理员都会遇到安装不完整、权限不对齐还有远程访问被拒绝等痛点。下面按步骤拆解常见难题,并给出一套高效的方法,方便你提高数据库管理技能。按理说,
一、基础准备与安装
如果你刚接触 MariaDB。要确认程序已更新而且安装了服务器和客户端:
sudo apt update
sudo apt install mariadb-server mariadb-client
说到常见痛点,“apt 安装后提示缺少依赖”。这通常是因为软件源没有同步。怎么说呢,执行 sudo apt update 再重试即可。
二、开启服务并设置开机自启
安装完成后启动 MariaDB 并让其随程序自动启动:
sudo systemctl start mariadb
sudo systemctl enable mariadb
如果看到 Unit mariadb.service not found. 错误,请检查 /etc/systemd/system/mariadb.service.d/override.conf 是否存在。
1. 登录 MariaDB 控制台
Mysql 客户端默认以 root 使用者登录,但在 Ubuntu 上 root 默认使用插件 unix_socket,需要先切换密码或使用 sudo 登录:
# 用程序使用者身份直接登录
sudo mysql -u root
# 或者改为传统密码验证
sudo mysql_secure_installation
2. 防火墙允许 MySQL 访问
If you are using UFW:
# 开放默认端口3306
sudo ufw allow mysql/tcp
# 或者指定 IP 范围。例如仅允许内部网 IP
sudo ufw allow from 192.168.0.0/24 to any port 3306 proto tcp
三、文件程序与权限配置
Mysql 数据目录默认位于 /var/lib/mysql。确保目录归属正确,以防止因权限导致的数据读写失败:
# 修正所有权
sudo chown -R mysql:mysql /var/lib/mysql
# 确认权限至少是750
find /var/lib/mysql -type d -exec chmod 750 {} \;其实,find /var/lib/mysql -type f -exec chmod 640 {} \;
四、使用者管理与权限授予
Mysql 权限最关键的是"谁能做什么"。
A. 创建新使用者并授予特定数据库权限
# 创建使用者,仅限本机连接,并设置密码
CREATE USER 'alice'@'localhost' IDENTIFIED BY 'StrongPass!23',# 授予 SELECT 与 INSERT 权限到指定数据库
GRANT SELECT,INSERT ON mydb.* TO 'alice'@'localhost';FLUSH PRIVILEGES;
B. 授予全局管理员权限
# 给某使用者全局 ALL 权限,并可授予他人其他使用者权限
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;按理说,FLUSH PRIVILEGES;不过,
C. 撤销或删除使用者的权限/账号
- 撤销单条权限:
# 撤销所有对 mydb 的 SELECT 与 INSERT 权限
REVOKE SELECT。INSERT ON mydb.* FROM 'alice'@'localhost';FLUSH PRIVILEGES;
DROP USER 'alice'@'localhost';FLUSH PRIVILEGES;
再看注意。直接 DROP USER 会把该账号所有的授权全部消失,请确认无误后再执行。
五、远程访问配置与安全强化
至于痛点。默认只监听本地回环地址,导致外部无法连接。
A. 修改监听地址为全网通用
cat /dev/null bind-address = 0.0.0.0 EOF # 重新启动使改动生效 sudo systemctl restart mariadb EOF
B. 强化 root 使用者登录方式
- 禁用 MySQL root 密码登录,只允许 UNIX socket 验证。
- 示例命令: ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
- 如果需要网络访问。可创建一个专门的 admin 使用者,并赋予必要的特权。
C.FW 调整以支持远程连接
sudo ufw allow from 10.x.x.x/24 to any port 3306 proto tcp EOF
六、性能监控与日志排查技巧
- 查看慢查询日志:
监控实时查询状态:
| User Name & Hostname | Process ID | State | Query Time | Info |
|---|
请根据实际环境替换 php 部分或直接手工执行上述命令。
常见错误排查:
- * “Access denied for user ‘username’@‘ip’” – 检查 GRANT 是否包含相应 IP; 若使用 '%' 则需确保防火墙已放行; 若使用具体 IP,则必须对应主机地址。老实说,
/var/log/mysql/error.log最常见原因是硬盘空间不足或内存不足导致崩溃。小结的观点是,快速提高 MariaDB 管理技能
1️⃣ 先把环境搞定更新 → 安装 → 启动 → 自启 2️⃣ 合理划分账户root 用于维护;业务账户只授必要权限 3️⃣ 文件程序 + SELinux/AppArmor 必须匹配 4️⃣ 防火墙 + bind-address 明确允许哪些 IP 5️⃣ 日志 & 性能监控 成功运维少不了
掌握以上步骤。你就能从“新手卡壳”迈向“熟练掌控”,在实际项目中迅速定位和处理问题,从而明显提高工作效率。老实说,祝你玩转 MariaDB 🚀

