安装数据库
容器化方式部署
mkdir -p /data/mysql
docker run --name mysql -d \
--restart always \
-e MYSQL_ROOT_PASSWORD=Abc123# \
-p 3316:3306 \
-v /data/mysql:/var/lib/mysql \
swr.cn-southwest-2.myhuaweicloud.com/springboot-projiect-ckgl/mysql:8.0.15在MySQL中创建用户、允许远程登录并授权管理数据库:软件包方式部署
apt update
apt install mariadb-server
systemctl enable mariadb --now
#安全配置
mysql_secure_installation
执行后会引导你完成以下关键配置:
设置root密码(强烈建议设置)
删除匿名用户
禁止root远程登录(安全起见)
删除测试数据库
重新加载权限表
#最后验证连接
mysql -uroot -p建库建用户
1. 连接MySQL服务器
使用root或具有管理员权限的账户登录MySQL:
mysql -u root -p2. 创建用户并设置密码
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';%表示允许从任意远程主机登录。若限制特定IP,可替换为'IP地址'(如'192.168.1.100')。
3. 授权用户管理指定数据库
授予对数据库(例如 mydb)的所有权限:
GRANT ALL PRIVILEGES ON mydb.* TO '用户名'@'%';mydb.*表示授权操作mydb数据库的所有表(如需授权全部数据库则用*.*)。
4. 刷新权限使设置生效
FLUSH PRIVILEGES;5. 检查用户权限
确认授权是否成功:
SHOW GRANTS FOR '用户名'@'%';halodb示例
以halodb为例,root用户如果不能远程连接,就创建halo用户,远程连接来管理数据库。
#查看数据库密码
cat /opt/halo/docker-compose.yaml|grep WORD
#进入容器,连接数据库
docker exec -it halo-halodb-1 /bin/bash
mysql -uroot -p-- 创建用户 halo并允许从任意IP登录
CREATE USER 'halo'@'%' IDENTIFIED BY 'halo';
-- 授权 halo管理 halo数据库
GRANT ALL PRIVILEGES ON halo.* TO 'halo'@'%';
-- 刷新权限
FLUSH PRIVILEGES;最后,云服务器安全组放开数据库服务3306/tcp端口,使用数据库连接工具(比如DBeaver)连接数据库,对halo数据库进行管理。使用完毕以后关闭安全组关闭数据库服务3306/tcp端口。
我原本打算,连接halo的数据库。查看用户表,获取用户邮箱,结果连接上数据库后,发现只有一个表。查看官网得知,只能通过API接口进行CURD,官网开发者文档链接:RESTful API | Halo 文档
数据库备份与恢复
因为我的数据库都是我个人在使用(非企业),每个系统基本就一个数据库,这里主要记录单库的备份与恢复方法,方便后续忘记了随时可以来这里查阅。
备份
#基础备份命令
mysqldump -u root -p 数据库名 > 备份文件名.sql
#基础示例
mysqldump -u root -p mydb > /backup/mydb_backup_$(date +%Y%m%d).sql
#压缩备份(节省空间,推荐!)
mysqldump -u root -p mydb | gzip > /backup/mydb_backup_$(date +%Y%m%d).sql.gz推荐增强版(避免锁表,适合生产环境)
mysqldump -u root -p --single-transaction mydb > /backup/mydb_backup_$(date +%Y%m%d).sql参数说明:
--single-transaction:对InnoDB表进行一致性备份,不会锁表,适合在线备份$(date +%Y%m%d):自动添加日期到备份文件名,方便管理
恢复
#确保目标数据库存在(如果不存在,先创建)
CREATE DATABASE IF NOT EXISTS mydb;
#基础恢复命令
mysql -u root -p mydb < /backup/mydb_backup_20231027.sql
#压缩备份恢复命令
gunzip < /backup/mydb_backup_20231027.sql.gz | mysql -u root -p mydb实用技巧与最佳实践
1. 定期备份自动化
创建一个备份脚本(比如backup_db.sh):
1#!/bin/bash
2mysqldump -u root -pMyPasswd --single-transaction mydb | gzip > /backup/mydb_backup_$(date +%Y%m%d).sql.gz然后设置cron任务,每天凌晨2点自动备份:
10 2 * * * /path/to/backup_db.sh2. 备份文件管理
命名规范:
数据库名_日期.sql(如mydb_20231027.sql)存储位置:建议放在独立的备份目录,比如
/backup/保留策略:保留最近7天的备份,每周存一份到异地