好的!以下是扩展后的博客内容,新增了安全加固、常用命令、备份恢复、远程访问配置等内容,保持了原有的技术文档风格:


Arch Linux 安装和使用 MySQL(MariaDB)

安装 MariaDB 和客户端工具

1
sudo pacman -S mariadb mariadb-clients

初始化数据目录

1
2
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
# 输出提示包含初始化完成信息

启动与开机自启

1
2
3
sudo systemctl start mysqld          # 启动服务
sudo systemctl enable mysqld # 设置开机自启动(可以不设置)
sudo systemctl status mysqld # 查看服务状态(注意服务名是mysqld)

安全加固

1
2
sudo mysql_secure_installation
# 按提示操作:删除匿名用户/禁止远程root登录/删除测试数据库等

修改root密码

1
sudo mariadb-admin -u root password 'password'

连接数据库

1
2
sudo mariadb -uroot -p
# 输入密码后进入交互界面

常用操作命令

数据库管理

1
2
3
4
SHOW DATABASES;                     -- 列出所有数据库
CREATE DATABASE mydb; -- 创建数据库
USE mydb; -- 切换数据库
DROP DATABASE mydb; -- 删除数据库

用户与权限

1
2
3
4
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass123'; -- 创建本地用户
GRANT ALL PRIVILEGES ON mydb.* TO 'user1'@'localhost'; -- 授权所有权限
FLUSH PRIVILEGES; -- 刷新权限生效
SELECT user,host FROM mysql.user; -- 查看用户列表

表操作

1
2
3
SHOW TABLES;                        -- 显示当前数据库所有表
DESC mytable; -- 查看表结构
SOURCE /path/to/backup.sql; -- 导入SQL文件

数据备份与恢复

备份整个数据库

1
sudo mysqldump -u root -p --all-databases > full_backup.sql

恢复数据库

1
sudo mariadb -u root -p < full_backup.sql

配置远程访问(谨慎操作)

  1. 修改配置文件:

    1
    sudo vim /etc/my.cnf.d/server.cnf

    [mysqld] 段添加:

    1
    bind-address = 0.0.0.0
  2. 创建远程用户:

    1
    2
    3
    CREATE USER 'remote'@'%' IDENTIFIED BY 'StrongPass!';
    GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%';
    FLUSH PRIVILEGES;
  3. 开放防火墙:

    1
    sudo ufw allow 3306/tcp

故障排查技巧

  1. 查看错误日志:

    1
    sudo journalctl -u mysqld -xe
  2. 重置root密码:

    1
    2
    3
    4
    sudo systemctl stop mysqld
    sudo mysqld_safe --skip-grant-tables &
    mariadb -u root
    # 执行 UPDATE mysql.user SET password=PASSWORD('newpass') WHERE user='root';

性能优化建议

  1. 安装内存优化工具:

    1
    2
    sudo pacman -S mysqltuner
    mysqltuner --user root --pass
  2. 调整配置文件:

    1
    sudo vim /etc/my.cnf.d/custom.cnf

    添加优化参数:

    1
    2
    3
    4
    [mysqld]
    innodb_buffer_pool_size = 1G
    query_cache_type = 1
    thread_cache_size = 8