0、参考博客

注意赋权 mysql 文件夹的时候,进入到MySQL文件里面再执行

1、创建mysql用户

会创建MySQL 用户 和MySQL用户组

useradd -s /sbin/nologin -M mysql
 cat /etc/passwd
 cat /etc/group

2、解压安装包

使用如下命令解压安装包

tar -axvf mariadb-10.5.10-linux-systemd-x86_64.tar.gz

解压后的文件夹名为mysql,并移动到/user/local中

mv mariadb-10.5.10-linux-systemd-x86_64 mysql
mv mysql/ /usr/local/

最后文件会在 /user/local中

至于 为什么要移动到 /use/local 目录下,且不要加参数 ,后面的 basedir 默认就是/usr/local/mysql

--basedir=/home/mariadb-10.0.38 --datadir=/home/mariadb-10.0.38/data/

不然会报一个错误 FATAL ERROR: Could not find my_print_defaults,这是一个bug

MySQL bug页面

查看/usr/local

8 centos 离线安装mysql centos离线安装mariadb数据库_mysql

将MySQL这个文件所有权交给MySQL

chown -R mysql:mysql /usr/local/mysql

mysql指定路径和用户初始化

建立数据库存储目录

mkdir -p /data/maridb

将mariadb的数据存储文件所属用户改为mysql

chown -R mysql:mysql /data/maridb

先进入 mysql 目录即 /usr/local/mysql,这个文件是我们前面改过的(其实是maridb)

#   这个是例子 我们可以配置 基础目录和 数据安装目录(数据的数据最后都是一堆文件) ./scripts/mysql_install_db  --basedir=/home/mariadb-10.0.38 --datadir=/home/mariadb-10.0.38/data/ --user=mysql

# 不需要指定basedir(默认就是/usr/local/mysql)
# 如果指定的话,就会出现前面说的那个问题 `FATAL ERROR: Could not find my_print_defaults`,这是一个bug  

./scripts/mysql_install_db  --datadir=/data/maridb  --user=mysql

如果出现

error while loading shared libraries: libaio.so.1: cannot open shared object file: No such

则安装

yum install -y libaio

8 centos 离线安装mysql centos离线安装mariadb数据库_数据库_02

配置数据库

移动配置文件

默认 /etc/my.cnf 会有这个文件,默认会从这里加载配置文件

mv /etc/my.cnf /etc/my.cnf.bak

将配置文件模板移动到/etc下(不同的版本的maridb配置模板文件不一致,比如 10.0.xx 的是my-innodb-heavy-4G.cnf,而我现在安装的是10.5.x 里面就是 wsrep.cnf ,反就是copy 一个cnf 文件而已)

#配置文件模板在mariadb包解压之后的support-files路径下
cp support-files/wsrep.cnf  /etc/my.cnf

编辑配置文件

修改配置文件中的安装路径和数据路径(这两个路径就是前面提到的了)

vim /etc/my.cnf  #注意是在【mysqld】标签下
basedir=/usr/local/mysql
datadir=/data/maridb

8 centos 离线安装mysql centos离线安装mariadb数据库_perl_03

配置自启动的问题

1、 /etc/init.d 与 /etc/rc.d/init.d

我们到 /etc 目录下可以看到,/etc/init.d/etc/rc.d/init.d 的一个软连接,注意主从系,/etc/rc.d/init.d 才是真实目录

8 centos 离线安装mysql centos离线安装mariadb数据库_8 centos 离线安装mysql_04

所以 /etc/init.d 内容和 /etc/rc.d/init.d 都是相同的,这也是为什么我们将启动脚本copy到 /etc/rc.d/init.d 目录下,而 /etc/init.d 下面也会出现 mysql.server(而且其它内容都是一样的)

8 centos 离线安装mysql centos离线安装mariadb数据库_8 centos 离线安装mysql_05

关于其它详细的可以参考文章 https://cloud.tencent.com/developer/article/1533529

2、/etc/rc0.d 等与 /etc/rc.d/rc0.d 等

在 /etc 目录下可以看到 rc0.d,rc1.d,rc1.d 的映射关系

8 centos 离线安装mysql centos离线安装mariadb数据库_perl_06


所以对应关系如下,注意主从关系 ,/etc/rc0.d 目录是 /etc/rc.d/rc0.d 目录的软连接,所以 /etc/rc.d/rc0.d 才是真实目录

真实目录

关系

被映射的(虚拟目录)

/etc/rc.d/rc0.d

映射

/etc/rc0.d

/etc/rc.d/rc1.d

映射

/etc/rc1.d

/etc/rc.d/rc2.d

映射

/etc/rc2.d

关于其它详细的可以参考文章 https://cloud.tencent.com/developer/article/1533529

3、为什么要创建 /etc/init.d/etc/rc0.d … 等软连接?

直接在 /etc/rc.d/init.d ,/etc/rc.d/rc0.d 这些真实目录里面配置不就行了吗。

其实 /etc/rc.d/init.d ,/etc/rc.d/rc0.d 都是用来放服务脚本的,当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的run level确定不同的启动级别。

在制作服务脚本的过程中,使用了Linux的两个版本,CentOS和Ubuntu,就需要在两个版本中都可以开机启动服务。但Ubuntu没有 /etc/rc.d/init.d这个真实目录,所以,为了保持同一种服务在CentOS和Ubuntu使用的统一性。

将服务脚本(注:服务脚本在两个不同版本中是不同的)都放在 /etc/init.d 这个虚拟链接目录下,最终达到的效果是相同的(对于 rc0.d 也是这样的问题)。

需要说明的是:在CentOS和Ubuntu两个版本中,除了服务脚本放置的目录是相同的,服务脚本的编写及服务配置都是不同的。比如CentOS使用Chkconfig进行配置,而Ubuntu使用sysv-rc-conf进行配置。

关于其它详细的可以参考文章 https://cloud.tencent.com/developer/article/1533529

4、关于CentOS 中使用 chkconfig 命令设置自启动

注意 Ubuntu使用sysv-rc-conf 命令 进行配置。

在linux操作系统下,经常需要创建一些服务,这些服务被做成shell脚本,这些服务需要在系统启动的时候自动启动,关闭的时候自动关闭。

将需要自动启动的脚本放入 /etc/rc.d/init.d(真实目录) 目录下,然后用命令 chkconfig --add filename 将自动注册开机启动和关机关闭。

实质就是在 rc0.d-rc6.d 目录下生成一些文件连接,这些链接连接到 /etc/rc.d/init.d 目录下指定文件的shell脚本。

关于 chekconfig 可以参考

启动mariadb

  • 先配置环境变量(后面直接使用 mysql 等命令)
echo 'export PATH=/usr/local/mysql/bin:$PATH' >  /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

可以看到mysql/bin 已经加入到PATH里面了

8 centos 离线安装mysql centos离线安装mariadb数据库_MySQL_07

  • 将启动脚本移至启动路径
cp support-files/mysql.server /etc/rc.d/init.d/mysql.server
  • 设置mariadb开机自启动
# 将 服务加入 开机自启动列表中
 chkconfig --add mysql.server
 # 设置开机自起
chkconfig mysql.server on
  • 使用启动脚本启动mariadb
/etc/init.d/mysql.server start 
或者
systemctl start mysql.server
  • 检查是否设置成功
chkconfig --list mysql.server

出现如下内容表示成功

8 centos 离线安装mysql centos离线安装mariadb数据库_MySQL_08

设置root用户密码

  • 无密码登录mysql
mysql -uroot -p
  • root用户授权改密码(三个都需要执行)
grant all privileges on *.* to 'root'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'localhost' identified by '123456';
grant all privileges on *.* to 'root'@'127.0.0.1' identified by '123456';
flush privileges;
  • 退出,使用新密码登录
mysql -uroot -p123456