如何在Linux上使用MariaDB进行开发
导读:在 Linux 上使用 MariaDB 进行开发 一 安装与启动 基于 Debian/Ubuntu 安装:sudo apt update && sudo apt install mariadb-server mariad...
在 Linux 上使用 MariaDB 进行开发
一 安装与启动
- 基于 Debian/Ubuntu
- 安装:
sudo apt update & & sudo apt install mariadb-server mariadb-client-core - 启动与自启:
sudo systemctl start mariadb & & sudo systemctl enable mariadb - 验证:
sudo systemctl status mariadb或mysql -V
- 安装:
- 基于 RHEL/CentOS
- 安装:
sudo yum install mariadb-server mariadb - 启动与自启:
sudo systemctl start mariadb & & sudo systemctl enable mariadb - 验证:
sudo systemctl status mariadb或mysql -V
- 安装:
- 安全初始化(首次安装强烈建议)
- 执行:
sudo mysql_secure_installation(设置 root 强密码、删除匿名用户、禁止远程 root 登录、移除测试库等)
- 执行:
- 连接测试
- 本地:
mysql -u root -p - 远程:
mysql -u < user> -h < host> -P 3306 -p
- 本地:
- 备注
- 在 CentOS/RHEL 7+ 中,系统仓库的 MySQL 包名已替换为 mariadb-server,用法与 MySQL 兼容。
二 配置开发环境
- 字符集与排序规则
- 建议统一使用 utf8mb4/utf8mb4_general_ci,在客户端与服务端配置:
- 客户端(如 my.cnf 的 [mysql] 段):
default-character-set=utf8mb4 - 服务端([mysqld] 段):
character-set-server=utf8mb4、collation-server=utf8mb4_general_ci
- 客户端(如 my.cnf 的 [mysql] 段):
- 建议统一使用 utf8mb4/utf8mb4_general_ci,在客户端与服务端配置:
- 网络与端口
- 默认端口 3306;如需仅本地访问,可绑定 127.0.0.1;如需远程开发,开放防火墙并限制来源网段。
- 容器化开发(Docker,便于隔离与复现)
- 示例 docker-compose.yaml(挂载自定义配置、数据卷与端口映射):
services: db: image: mariadb:latest restart: always container_name: mariadb environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: devdb MYSQL_USER: dev MYSQL_PASSWORD: devpass volumes: - ./my.cnf:/etc/mysql/conf.d/my.cnf:ro - ./data:/var/lib/mysql ports: - "3306:3306" - 启动:
docker compose up -d;连接:mysql -h 127.0.0.1 -P 3306 -u dev -p。
- 示例 docker-compose.yaml(挂载自定义配置、数据卷与端口映射):
三 数据库与用户管理
- 登录:
mysql -u root -p - 常用 SQL
- 版本:
SELECT VERSION(); - 建库:
CREATE DATABASE IF NOT EXISTS devdb DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; - 建用户:
CREATE USER 'dev'@'%' IDENTIFIED BY 'StrongPass!'; - 授权:
GRANT ALL PRIVILEGES ON devdb.* TO 'dev'@'%'; - 刷新:
FLUSH PRIVILEGES; - 改密:
ALTER USER 'dev'@'%' IDENTIFIED BY 'NewPass!'; - 撤销:
REVOKE ALL PRIVILEGES ON devdb.* FROM 'dev'@'%'; DROP USER 'dev'@'%';
- 版本:
- 最小权限原则
- 应用连接建议使用仅对目标库具备 SELECT/INSERT/UPDATE/DELETE 权限的专用账号,避免使用 root。
四 备份恢复与日常维护
- 逻辑备份与恢复
- 备份:
mysqldump -u root -p --single-transaction --routines --triggers --default-character-set=utf8mb4 devdb > devdb.sql - 恢复:
mysql -u root -p devdb < devdb.sql
- 备份:
- 定时备份(示例)
- 创建脚本 backup.sh:
mysqldump -u root -p devdb > /backups/devdb_$(date +%F).sql - 赋权:
chmod +x backup.sh - 定时任务(每天 02:00):
0 2 * * * /backups/backup.sh
- 创建脚本 backup.sh:
- 性能与诊断
- 查看连接与慢查询:
SHOW PROCESSLIST;、EXPLAIN SELECT ...; - 建议开启慢查询日志,定位全表扫描与索引缺失。
- 查看连接与慢查询:
五 应用连接与开发实践
- 连接字符串示例
- JDBC:
jdbc:mariadb://localhost:3306/devdb?useSSL=false& characterEncoding=utf8mb4 - Python(PyMySQL):
pymysql.connect(host='127.0.0.1', port=3306, user='dev', password='devpass', database='devdb', charset='utf8mb4') - Node.js(mysql2):
mysql.createConnection({ host: '127.0.0.1', user: 'dev', password: 'devpass', database: 'devdb', charset: 'utf8mb4' } )
- JDBC:
- 开发建议
- 统一使用 utf8mb4 避免表情符号乱码;为高频查询建立合适索引;使用连接池与合理的事务隔离级别;SQL 语句以分号结尾并在版本控制中管理迁移脚本(如 Flyway/Liquibase)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Linux上使用MariaDB进行开发
本文地址: https://pptw.com/jishu/755170.html
