MariaDB安装与基本配置

## 安装MariaDB Ubuntu/Debian系直接apt:
sudo apt update
sudo apt install mariadb-server mariadb-client -y
CentOS/RHEL系用dnf或yum:
sudo dnf install mariadb-server mariadb -y
装完检查服务状态:
sudo systemctl status mariadb
没启动就手动启:
sudo systemctl start mariadb
sudo systemctl enable mariadb
## 安全初始化 装完后必须跑安全脚本,不然root无密码、匿名用户全开,等于裸奔:
sudo mysql_secure_installation
交互过程注意: – 输入当前root密码:刚装完直接回车(空密码) – 切换到unix_socket认证?选n(保持密码认证,否则root只能通过系统root用户登录) – 修改root密码?选y,设个强密码 – 移除匿名用户?选y – 禁止root远程登录?选y(生产环境必须,本地连就够了) – 移除test数据库?选y – 重新加载权限表?选y ## 基本配置 配置文件在`/etc/mysql/mariadb.conf.d/`或`/etc/my.cnf.d/`。主要改`50-server.cnf`(Debian系)或`server.cnf`(RHEL系)。 ### 修改监听地址 默认只监听127.0.0.1,如果需要在其他机器连(比如用雨云的服务器跑业务),改bind-address:
[mysqld]
bind-address = 0.0.0.0
或者只监听内网IP:
bind-address = 10.0.0.2
### 字符集 强制UTF8MB4,避免乱码:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
### 内存优化 小内存机器(1-2G)这样配,避免OOM:
[mysqld]
innodb_buffer_pool_size = 256M
max_connections = 100
query_cache_size = 0
query_cache_type = 0
大内存机器(雨云那种性价比高的服务器,4G以上)可以给到内存的60-70%:
innodb_buffer_pool_size = 2G
改完配置重启:
sudo systemctl restart mariadb
## 创建数据库和用户 登录:
sudo mysql -u root -p
创建数据库:
CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
创建用户并授权(不要直接用root连业务):
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON myapp.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
如果应用跑在其他机器,把`localhost`换成`192.168.1.%`或`%`(不推荐,风险大):
CREATE USER 'appuser'@'192.168.1.%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON myapp.* TO 'appuser'@'192.168.1.%';
## 防火墙 如果是云服务器(比如雨云),记得在安全组放行3306端口。本地防火墙也要开:
sudo ufw allow 3306/tcp
# 或 firewalld
sudo firewall-cmd --add-port=3306/tcp --permanent
sudo firewall-cmd --reload
## 日常维护命令 查看版本:
SELECT VERSION();
查看数据库列表:
SHOW DATABASES;
查看当前连接:
SHOW PROCESSLIST;
查看表结构:
DESCRIBE users;
查看慢查询:
SHOW VARIABLES LIKE 'slow_query%';
开启慢查询日志(排查性能问题):
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time = 2
## 备份与恢复 用mysqldump备份单个数据库:
mysqldump -u root -p myapp > myapp_backup.sql
备份所有数据库:
mysqldump -u root -p --all-databases > all_backup.sql
恢复:
mysql -u root -p myapp < myapp_backup.sql
或者直接source:
SOURCE /path/to/myapp_backup.sql;
## 常见问题 Can’t connect to local MySQL server through socket:检查mysqld是否在运行,或者socket路径不对。看`/var/run/mysqld/mysqld.sock`存不存在。 Access denied for user:密码错了,或者用户没有对应host的权限。用`FLUSH PRIVILEGES`重新加载。 Table ‘xxx’ doesn’t exist:数据库名或表名大小写问题。MariaDB在Linux下默认区分大小写,建表时统一用小写。 Too many connections:连接数不够,调大`max_connections`,或者检查是否有程序没释放连接。 基本就这样。装完跑起来,改改配置就能用了。需要高可用或读写分离的话,后面可以搭主从复制。

雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容