NO.A.0003——mysql/mariadb10.2.35——二进制安装/配置

一、二进制包下载:
地址:https://downloads.mariadb.org/mariadb/10.2.35/ 选择你要安装的版本;
在这里插入图片描述

该地址有三种数据格式的文件:
Source——源码
Binaries——二进制
Packages——rpm包(针对centos,Redhat,Ubuntu系列的)

下载二进制包:mariadb-10.2.35-linux-x86_64.tar.gz版本 //linux表示在linux系统中效验过的程序。
二进制10.2.35版本配置教程地址:https://mariadb.com/kb/en/installing-mariadb-binary-tarballs/
注:
源码只带版本号,不会带linux或者window提示,包比较小,只有69.9MB左右,而二进制文件,是在linux或者window上编译好了的,会带有一些提示信息。

二、安装二进制程序mariadb:
1、检查系统环境:

//1、确保当前系统没有安装相同的软件包;
[[email protected] ~]# rpm -q mariadb-server
package mariadb-server is not installed
[[email protected] ~]# rpm -q mysql-server
package mysql-server is not installed
//查看当前3306端口是空闲的
[[email protected] ~]# ss -ntl

2、二进制包安装准备教程:

//1、准备用户:    
[[email protected] ~]# useradd -r -d /data/mysqldb    -s /sbin/nologin mysql  
// -r:普通的系统用户,
// -d:指定家目录,(建议使用逻辑卷;便于扩展)
// /data/mysqldb这个文件夹默认是没有的,执行上面也不会创建,加上-m强行去创建,当前不去强制,后期改
// -s /sbin/nologin shell类型,

[[email protected] ~]# getent passwd mysql
mysql:x:996:994::/data/mysqldb:/sbin/nologin
[[email protected] ~]# id mysql            //主组创建好了
uid=996(mysql) gid=994(mysql) groups=994(mysql)   
//2、指定存放数据库程序目录路径,
[[email protected] ~]# tar -zxvf mariadb-10.2.35-linux-x86_64.tar.gz  -C /usr/local/   
 //-C表示指定文件的路径;解压完是mariadb-10.2.35-linux-x86_64,
 编译时使用的mysql目录,创建软连接或者更改目录名称,此刻会创建存放数据库程序的第一个文件夹
//3、创建软连接
[[email protected] local]# ln -s mariadb-10.2.35-linux-x86_64/ mysql  
//因为编译的时候使用的是mysql这个文件夹,建议创建软连接;也是可以的
[[email protected] local]# ll
lrwxrwxrwx   1 root root  29 Nov  6 17:11 mysql -> mariadb-10.2.35-linux-x86_64/

//更改文件的所有者(不强制更改)
[[email protected] local]# ll mysql/             //查看文件夹发现文件的所有者都是1000,
total 176
drwxrwxr-x  2 1000 1000  4096 Oct 23 01:55 bin
[[email protected] local]# chown -R root mysql/  //只改文件的所有者,所属组不会发生变化;
[[email protected] local]# ll mysql/
drwxrwxr-x  2 root 1000  4096 Oct 23 01:55 bin
[[email protected] local]# chown -R root: mysql/  //root:加上冒号表示所属组也更改,
        或者root:root也是同理
[[email protected] local]# ll mysql/
drwxrwxr-x  2 root root  4096 Oct 23 01:55 bin

2、配置环境变量:

//4、配置环境变量:
[[email protected] ~]# ls /usr/local/mysql/bin/        //数据库的二进制文件
aria_chk        mbstream           mysqladmin 
//放到PATH变量里面
[[email protected] local]# echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh   
                //把mysql的二进制文件放到PATh变量里面
[[email protected] local]# . /etc/profile.d/mysql.sh               //使变量生效
[[email protected] local]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

3、创建数据存放目录,若是生产数据,建议使用逻辑卷(逻辑卷创建教程:知识点一)

//5、创建存放生产数据目录mysqldb(在/data下挂载逻辑卷后创建mysqldb)
[[email protected] ~]# df      -h
/dev/mapper/vg0-lv_mysql  62879748   32992  62846756   1% /data
[[email protected] ~]# mkdir /data/mysqldb
[[email protected] ~]# chown mysql.mysql /data/mysqldb   //把改文件夹所有者所属组都更改为mysql
[[email protected] ~]# ll -d /data/mysqldb/
drwxr-xr-x 2 mysql mysql 6 Nov  6 17:57 /data/mysqldb/
[[email protected] ~]# chmod 770 /data/mysqldb/          //更改文件的权限,其他人不可以访问该文件夹
[[email protected] ~]# ll -d /data/mysqldb/
drwxrwx--- 2 mysql mysql 6 Nov  6 17:57 /data/mysqldb/

4、检查程序所需要的两个文件夹:

[[email protected] ~]# ll /usr/local/mysql/ -d         //数据库程序存放的位置
drwxrwxr-x 12 root root 282 Nov  3 02:30 /usr/local/mysql/
[[email protected] ~]# ll /data/mysqldb/ -d            //收集用户数据的,生产数据存放位置
drwxrwx--- 2 mysql mysql 6 Nov  6 17:57 /data/mysqldb/

5、生成mysql数据库文件:调用脚本(进入到二进制程序所在的文件夹里面);只是指定生成数据库文件。

//6、生成数据库数据文件
[[email protected] ~]# cd /usr/local/mysql/            //进入到二进制程序文件夹
[[email protected] mysql]# ls scripts/    //生成数据库文件调用脚本,该脚本在scripts目录之下。
mysql_install_db
[[email protected] scripts]# ./mysql_install_db  --datadir=/data/mysqldb  --user=mysql    
            //--datadir  指定生成的数据库存放位置
FATAL ERROR: Could not find ./bin/my_print_defaults
//安装数据库;在scripty下执行会报错;
//因为该mysql_install_db脚本会调用一些文件mysql目录下的一些文件,只能切回上一级目录

[[email protected] mysql]# scripts/mysql_install_db  --datadir=/data/mysqldb  --user=mysql     
            //执行该脚本,出现ok说明调用脚本成功,生成数据库成功
Installing MariaDB/MySQL system tables in '/data/mysqldb' ...
OK
[[email protected] mysql]# ll /data/mysqldb/   //可以在我们准备的收集用户数据的目录下看到文件
total 110620
-rw-rw---- 1 mysql mysql    16384 Nov  6 18:13 aria_log.00000001        

6、配置启动程序脚本:修改二进制文件,告诉二进制文件启动脚本启动程序在什么位置(知识点二、知识点三);

//7、修改启动程序二进制文件
[[email protected] mysql]# ls support-files/ 
                        //这个目录下配置文件,作为我们mysql数据库的配置文件,提供了好几款的配置文件,
binary-configure  
my-huge.cnf                     //超级大的环境用该程序(针对内存来说的)
my-large.cnf                    //大环境用该程序(针对内存来说的)
my-small.cnf                    //小环境用该程序文件  (针对内存来说的)             
my-innodb-heavy-4G.cnf          //内测4个G的用该程序(针对内存来说的)
my-medium.cnf                   //中小型环境用该程序(针对内存来说的)

[[email protected] mysql]# cat support-files/mysql-log-rotate      //文件里会有简单的说明
# This logname can be set in /etc/my.cnf
# by setting the variable "log-error"

[[email protected] ~]# cp /etc/my.cnf{,.bak}   //备份我们之前的配置文件       shell语句备份范例
[[email protected] mysql]# cp support-files/my-huge.cnf /etc/my.cnf  
                //我们配置huge.cnf环境程序,覆盖到my.cnf我们的配置文件
cp: overwrite ‘/etc/my.cnf’?y               //表示同意覆盖

//编辑启动程序配置文件
[[email protected] mysql]# vim /etc/my.cnf     //修改我们的配置文件
[client]
port            = 3306
socket          = /tmp/mysql.sock           
[mysqld]
port            = 3306
datadir         = /data/mysqldb             //添加生产数据存储位置
socket          = /tmp/mysql.sock           //使用mysql.sock默认文件位置

6.1、配置数据库启动脚本:

//8、设置开机自启动
[[email protected] mysql]# cp support-files/mysql.server /etc/init.d/mysqld        
                        //把启动脚本cp到/etc/init.d/并改名称为mysqld
[[email protected] mysql]# ll /etc/init.d/mysqld 
[[email protected] mysql]# chkconfig --add mysqld  //默认情况下没有设置开机自启动;添加到开机自启动中
[[email protected] mysql]# chkconfig --list
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

[[email protected] ~]# systemctl  start mysql.service 

//9、MySQL数据库安全设置:
[[email protected] ~]# mysql_secure_installation
//10、登入mysql数据库
[[email protected] ~]# mysql -uroot -p123456
Server version: 10.2.35
MariaDB [(none)]> status
UNIX socket:        /tmp/mysql.sock

知识点一:
1、在虚拟机下添加一块空磁盘并创建逻辑卷(用来作为mysql数据库存放生产数据的目录)

//1、在虚拟机下添加新磁盘;注册新添加的磁盘:
[[email protected] ~]# echo '- - -' > /sys/class/scsi_host/host2/scan
[[email protected] ~]# lsblk
sdb      8:48   0   10G  0 disk 

//2、创建逻辑卷(创建PV)
[[email protected] ~]# pvcreate  /dev/sdb                      //sdb创建为物理卷pv
  Physical volume "/dev/sdb" successfully created.
[[email protected] ~]# pvdisplay 
  "/dev/sdb" is a new physical volume of "60.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb

//3、把这块盘添加到卷组里面vg(创建vg)(添加到lv)
[[email protected] ~]# vgcreate vg0 /dev/sdb       
  Volume group "vg0" successfully created
[[email protected] ~]# lvcreate  -n lv_mysql  -l 100%FREE vg0   
                //创建逻辑卷,-n:为该逻辑卷命名为lv_mysql,   -l:指定大小,100%GREE:全部使用
[[email protected] ~]# lvs                  //可以查看到该逻辑卷的大小
  LV       VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_mysql vg0 -wi-a----- <60.00g 

//4、创建文件系统:
[[email protected] ~]# mkfs.xfs  /dev/vg0/lv_mysql   //将该逻辑卷格式化为.xfs文件系统
[[email protected] ~]# blkid                         //对文件系统类型查询
/dev/mapper/vg0-lv_mysql: UUID="9f2bca6b-5748-497a-b6ea-4194b8dcd237" TYPE="xfs" 

//5、把创建好的逻辑卷挂载到一个目录之下(挂载)
[[email protected] ~]# getent passwd mysql               //查看mysql数据存放目录位置
mysql:x:996:994::/data/mysqldb:/sbin/nologin
[[email protected] ~]# mkdir /data/
[[email protected] ~]# vim /etc/fstab                    //挂在的话还是需要写到磁盘里面,配置
UUID=9f2bca6b-5748-497a-b6ea-4194b8dcd237  /data/        xfs     defaults        0 0
//在vim下直接查询  :r!blkid /dev/vg0/lv_mysql  该语句直接查询它的UID

[[email protected] ~]# mount -a                                        //挂载
[[email protected] ~]# df      -h
/dev/mapper/vg0-lv_mysql  62879748   32992  62846756   1% /data

//6、创建生产数据存放目录mysqdb
[[email protected] ~]# mkdir /data/mysqldb

知识点二:
2、配置启动程序脚本:修改二进制文件,发现mysql程序目录没有读写权限

 //1、我们配置huge.cnf环境程序,覆盖到my.cnf我们的配置文件
[[email protected] mysql]# cp support-files/my-huge.cnf /etc/my.cnf    
cp: overwrite ‘/etc/my.cnf’?y               //表示同意覆盖

//2、编辑启动程序配置文件
[[email protected] mysql]# vim /etc/my.cnf     //修改我们的配置文件
[client]
port            = 3306
socket          = /usr/local/mysql/mysql.sock           
// 配置在此位置,mysql目录没有给mysql用户授予读写权限,需要给mysql目录授予msql用户读写权限。
// 或者也可以给它一个MySQL用户可以写的权限的位置(默认位置为/tmp/mysql)

[mysqld]
port            = 3306
datadir         = /data/mysqldb             //添加生产数据存储位置
socket          = /usr/local/mysql/mysql.sock   //更改mysql.sock文件位置

//3、启动时会报错:
#问题现象:
[[email protected] ~]# systemctl  start mysql.service    
'/data/mysqldb/localhost.localdomain.err'               //错误日志地址
#处理思路:
[[email protected] ~]# cat /data/mysqldb/localhost.localdomain.err 
[ERROR] Can't start server : Bind on unix socket: Permission denied      //权限拒绝
[ERROR] Do you already have another mysqld server running on socket: 
/usr/local/mysql/mysql.sock ?      //没有找到mysql.sock文件

[[email protected] ~]# ss -tunlp       //查询到3306端口未开启,没有程序监听,
[[email protected] ~]# ll /usr/local/mysql/ -d   
                                    //查看到/usr/local/mysql/文件夹没有给mysql授予读写权限
drwxrwxr-x 12 root root 282 Nov  3 02:30 /usr/local/mysql/         
#解决方案:
[[email protected] mysql]# setfacl -R -m  u:mysql:rwx  /usr/local/mysql/  
                        // -R:对任何数据都有写权限;  u:mysql:rwx  :针对用户mysql有读写执行权限;
[[email protected] mysql]# ll /usr/local/mysql/ -d
drwxrwxr-x+ 12 root root 4096 Nov  3 02:30 /usr/local/mysql/  
                                                        // x+   可以看到给mysql目录授予了X+权限 

[[email protected] mysql]# systemctl start mysqld.service     //现在可以正常启动了
[[email protected] ~]# ss -tunlp       //此时可以看到3306端口了
 tcp    LISTEN     0      80         [::]:3306   users:(("mysqld",pid=118467,fd=21))

知识点三:

3、配置启动程序脚本:修改二进制文件,发现安全脚本找不到/tmp.my.sock文件位置
//1、我们配置huge.cnf环境程序,覆盖到my.cnf我们的配置文件
[[email protected] mysql]# cp support-files/my-huge.cnf /etc/my.cnf    
cp: overwrite ‘/etc/my.cnf’?y               //表示同意覆盖

//2、编辑启动程序配置文件
[[email protected] mysql]# vim /etc/my.cnf     //修改我们的配置文件
[client]
port            = 3306
socket          = /usr/local/mysql/mysql.sock           
//在配置安全脚本mysql_secure_installation时,默认是/tmp/mysql.sock下;
//更改目录地址后相对应的也需要更改mysql_secure_installation脚本配置信息。

[mysqld]
port            = 3306
datadir         = /data/mysqldb             //添加生产数据存储位置
socket          = /usr/local/mysql/mysql.sock   //更改mysql.sock文件位置
//3、执行安全脚本时报错:
#问题现象:
[[email protected] ~]# mysql_secure_installation      //执行边安全脚本
 MySQL server through socket '/tmp/mysql.sock' 
                    //使用/tmp/mysql.sock文件,我们之前配置是在/usr/local/mysql/mysql.sock
#解决思路:
[[email protected] ~]# less /usr/local/mysql/bin/mysql_secure_installation
                        //查看该脚本是不是定义了路径
#解决方案:
[[email protected] ~]# vim /etc/my.cnf                 //更改mysql.sock文件路径
socket          = /tmp/mysql.sock 
socket          = /tmp/mysql.sock
[[email protected] my.cnf.d]# /usr/local/mysql/bin/mysqld --print-defaults
                        //可以查看到他当时编译时指定的路径
/usr/local/mysql/bin/mysqld would have been started with the following arguments:
--port=3306 --datadir=/data/mysqldb --socket=/tmp/mysql.sock --skip-external-locking 
    --key_buffer_size=384M --max_allowed_packet=1M --table_open_cache=512 
        --sort_buffer_size=2M --read_buffer_size=2M --read_rnd_buffer_size=8M 
            --myisam_sort_buffer_size=64M --thread_cache_size=8 --query_cache_size=32M 
                --thread_concurrency=8 --log-bin=mysql-bin --server-id=1 

[[email protected] ~]# mysql_secure_installation       //此刻就可以正常执行了

猜你喜欢

转载自blog.51cto.com/15005403/2552277