Linux系统部署MySQL(mariadb)并进行简单的操作步骤

 更新时间:2026年05月27日 09:50:24   作者:冷莫溪  
MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,这篇文章主要介绍了Linux系统部署MySQL(mariadb)并进行简单的操作步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下

环境规划

服务器版本

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

关闭防火墙

systemctl stop firewalld
systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

关闭SElinux

直接在/root目录输入以下命令

setenforce 0

在/etc/selinux/config中设置selinux为disabled 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled  #改为disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

阿里云源+epel源

yum repolist
已加载插件:fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
源标识                                   源名称                                                                 状态
!base/7/x86_64                           CentOS-7 - Base - mirrors.aliyun.com                                   10,072
!epel/x86_64                             Extra Packages for Enterprise Linux 7 - x86_64                         13,791
!extras/7/x86_64                         CentOS-7 - Extras - mirrors.aliyun.com                                    526
!updates/7/x86_64                        CentOS-7 - Updates - mirrors.aliyun.com                                 6,173
repolist: 30,562

如果没有epel源通过一下命令安装

yum -y install epel-release

安装mysql(mariadb)

1.制作mariadb源

cd /etc/yum.repos.d/ # 进入目录
vim mariadb.repo     # 编辑源文件

编辑内容如下

[mariadb]
name=MariaDB
# baseurl=https://mirror.mariadb.org/yum/10.5/centos7-amd64
baseurl=https://mirror.mariadb.org/yum/10.11.17/rhel7-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

2.安装mysql(mariadb)

# 使用yum进行安装
yum -y  install MariaDB-server MariaDB-client

# 以下是安装完成的状态
已加载插件:fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
10201 packages excluded due to repository priority protections
软件包 MariaDB-server-10.11.9-1.el7.centos.x86_64 已安装并且是最新版本
软件包 MariaDB-client-10.11.9-1.el7.centos.x86_64 已安装并且是最新版本
无须任何处理

3.启动mysql(mariadb)

systemctl start mariadb #启动服务
systemctl enable mariadb #设置开机启动
systemctl restart mariadb #重新启动

使用ss查看是否启动

ss -taulanp | grep mariadb

mysql(mariadb)停止命令

systemctl stop mariadb #停止MariaDB

mysql(mariadb)设置

登录mysql

直接输入mysql或者输入mysql -uroot -p登录

方式一:mysql直接登录

输入mysql 直接进入不用输入初始密码

方式二:输入输入mysql -uroot -p进行登录

输入mysql -uroot -p进行登录 —— 初始密码为1

修改 MySQL root 密码的方法

方法一:通过 MySQL 命令行修改

登录 MySQL 服务器后执行以下命令:

use mysql;
update user set authentication_string=password('新密码') where user='root';
flush privileges;
exit;

重新登录验证:

mysql -u root -p

方法二:使用 mysqladmin 工具修改

在 Linux 终端执行:

mysqladmin -u root -p password '新密码'

注意事项

  • MySQL 5.7+ 版本使用 authentication_string 字段存储密码
  • 修改密码后必须执行 flush privileges 使更改生效
  • 密码应设置为强密码,避免使用简单密码如'123456'
  • 生产环境建议定期修改密码并做好备份

密码策略建议

  • 启用 validate_password 插件加强密码复杂度
  • 定期轮换密码(建议每90天)
  • 不同环境使用不同密码
  • 避免在脚本中明文存储密码

设置utf8字符集

1.先登录mysql输入\s查看查看初始状态

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 10.11.9-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          4
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.11.9-MariaDB MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8mb3
Conn.  characterset:    utf8mb3
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 2 min 42 sec

Threads: 1  Questions: 7  Slow queries: 0  Opens: 17  Open tables: 10  Queries per second avg: 0.043
--------------

2.退出mysql(mariadb)

MariaDB [(none)]> quit;
Bye

3.编辑文件/etc/my.cnf

vim /etc/my.cnf

加入配置

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'
skip-character-set-client-handshake

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

4.重启mariadb(mysql)

 systemctl restart mariadb

5.登录mysql,输入\s查看

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 10.11.9-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          3
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.11.9-MariaDB MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 56 sec

Threads: 1  Questions: 4  Slow queries: 0  Opens: 17  Open tables: 10  Queries per second avg: 0.071
--------------

mysql基础命令

库和表及查询操作

1.查看有那些库

show databases;

2.切换或选择要操作的数据库

use mysql;

3.查看表

show tables;

4.查看表结构

方式一

describe user; --简写desc user;

方式二

show create table user\G;

        desc和show create table 都是用来查看表结构的但侧重点不通、使用场景等不同。

         DESC 适合快速浏览字段的基础信息,SHOW CREATE TABLE 适合获取完整的建表语句和所有底层细节。

5.确认当前所处的数据库

select database();

库和表及用户创建授权的基础操作

1.创建数据库

create database 库名;

2.创建数据表

先切换选择创建好的数据库

use auth;

再进行数据库的创建

创建users表

create table users(
    user_name char(16) not null,       -- 创建用户名字段
    user_passwd char(48) default '',     -- 创建用户密码字段
    primary key (user_name));          -- 设置主键

创建yonghu表

create table yonghu(
    name char(10), -- 创建用户名字段
    passwd char(10), -- 创建用户密码字段
    primary key (name)); -- 设置主键

3.插入数据

insert into users values('冷莫溪','123.com'); 

使用select查看是否插入

select * from users;

4.用户的基本操作

(1)创建用户

create user lengmx identified by '123456';

(2)查询用户

方式一:使用select命令查询

select user,host,password from mysql.user;

方式二:使用show grants查询

show grants for 'lengmx'@'%';

(3)用户授权

授予权力,例如select

grant select on auth.* to 'lengmx'@'%';

使用show进行查询

show grants for 'lengmx'@'%';

(4)撤销用户授权

revoke select on auth.* from lengmx;
show grants for 'lengmx'@'%';

mysql备份与恢复

mysqldump 基础功能

mysqldump 是 MySQL 官方提供的逻辑备份工具,通过生成标准 SQL 语句文件实现数据库结构和数据的导出。支持单库、多库、单表或全库备份,默认输出到标准输出,需通过重定向保存为文件。

备份操作

1.在CentOS7.9中创建备份目录

mkdir -pv /opt/mysql_bak

2.备份单个数据库

把之前创建的数据库auth备份到/opt/mysql_bak/ mysql_bak中

mysqldump -uroot -p auth > /opt/mysql_bak/auth_db.sql

验证备份文件:

使用wc和cat进行查看

wc -l < /opt/mysql_bak/auth_db.sql
cat /opt/mysql_bak/auth_db.sql

3.备份特定数据表

把之前创建的数据表user备份到/opt/mysql_bak/mysql_bak中

mysqldump -uroot -p auth users > /opt/mysql_bak/users_bak.sql

验证命令与上面数据库备份相同。

4.全库备份

mysqldump -uroot -p --all-databases > /opt/mysql_bak/alldb.sql

5.查看数据库实际占用空间

du -sh /var/lib/mysql/

数据恢复操作

1.进入目标数据库

mysql -uroot -p
use auth;
show tables;

2.删除测试表

DROP TABLE users;

查看删除后的表是否还在

show tables;

3.从备份恢复表

进入备份目录cd /opt/mysql_bak/,使用之前备份特定数据库的文件,然后恢复表  

之前备份的命令进行改写(mysqldump换成mysql, > 换成 <)

mysql -uroot -p auth < /opt/mysql_bak/users_bak.sql;

验证恢复:

SHOW TABLES;
SELECT * FROM users;

关键注意事项

  • 备份时使用 > 重定向输出,恢复时使用 < 重定向输入
  • 恢复操作需确保目标数据库已存在(空库亦可)
  • 全库备份包含系统库,恢复时可能需特殊权限
  • 大表备份建议添加 --single-transaction 参数避免锁表

常用参数扩展

  • --no-data 仅备份结构
  • --add-drop-table 在创建表前添加删除语句
  • --skip-lock-tables 跳过锁表(可能影响一致性)
  • --where 条件导出部分数据

备份文件可通过压缩减少空间占用:

mysqldump -uroot -p dbname | gzip > backup.sql.gz

总结 

到此这篇关于Linux系统部署MySQL(mariadb)并进行简单的操作步骤的文章就介绍到这了,更多相关Linux部署MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL视图的概念和操作函数详解

    MySQL视图的概念和操作函数详解

    对MySQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理,下面这篇文章主要给大家介绍了关于MySQL数据库基本SQL语句教程之高级操作中视图的相关资料,需要的朋友可以参考下
    2023-03-03
  • MySQL同步ES的主流方案汇总

    MySQL同步ES的主流方案汇总

    在日常开发中,我们经常遇到这样的场景:MySQL作为核心数据库存储业务数据,而Elasticsearch(ES)则承担着全文检索和数据分析的重任,如何让MySQL和ES保持数据一致性,成了每个后端工程师都绕不开的问题,所以本文给大家介绍了MySQL同步ES的5种主流方案
    2026-03-03
  • Mysql 5.6

    Mysql 5.6 "隐式转换"导致的索引失效和数据不准确的问题

    这篇文章主要介绍了Mysql 5.6 “隐式转换”导致的索引失效和数据不准确的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • MySql5.7.18字符集配置图文详解

    MySql5.7.18字符集配置图文详解

    本文通过图文并茂的形式给大家介绍了mysql5.7.18字符集配置教程,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-06-06
  • MySQL BETWEEN AND踩坑记录

    MySQL BETWEEN AND踩坑记录

    这篇文章主要介绍了MySQL BETWEEN AND踩坑记录,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • mysql实现查询最接近的记录数据示例

    mysql实现查询最接近的记录数据示例

    这篇文章主要介绍了mysql实现查询最接近的记录数据,涉及mysql查询相关的时间转换、排序等相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • MySQL null与not null和null与空值''''''''的区别详解

    MySQL null与not null和null与空值''''''''的区别详解

    这篇文章主要介绍了MySQL null与not null和null与空值''的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 分享几个简单MySQL优化小妙招

    分享几个简单MySQL优化小妙招

    这篇文章主要介绍了分享几个简单MySQL优化小妙招,分享内容有、设置大小写不敏感、MySql 的用户和权限管理等内容,需要的小伙伴可以参考一下,需要的朋友可以参考下
    2022-03-03
  • 五分钟带你搞懂MySQL索引下推

    五分钟带你搞懂MySQL索引下推

    这篇文章主要介绍了Mysql的索引下推,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09
  • MySQL快速插入一亿测试数据

    MySQL快速插入一亿测试数据

    本文主要介绍了MySQL快速插入一亿测试数据,有时候测试需要大量的数据,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06

最新评论