标签:开机自启动 off 位置 用户 逻辑卷 defaults overwrite acl att
一、二进制包下载:该地址有三种数据格式的文件:
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、确保当前系统没有安装相同的软件包;
[root@localhost ~]# rpm -q mariadb-server
package mariadb-server is not installed
[root@localhost ~]# rpm -q mysql-server
package mysql-server is not installed
//查看当前3306端口是空闲的
[root@localhost ~]# ss -ntl
2、二进制包安装准备教程:
//1、准备用户:
[root@localhost ~]# useradd -r -d /data/mysqldb -s /sbin/nologin mysql
// -r:普通的系统用户,
// -d:指定家目录,(建议使用逻辑卷;便于扩展)
// /data/mysqldb这个文件夹默认是没有的,执行上面也不会创建,加上-m强行去创建,当前不去强制,后期改
// -s /sbin/nologin shell类型,
[root@localhost ~]# getent passwd mysql
mysql:x:996:994::/data/mysqldb:/sbin/nologin
[root@localhost ~]# id mysql //主组创建好了
uid=996(mysql) gid=994(mysql) groups=994(mysql)
//2、指定存放数据库程序目录路径,
[root@localhost ~]# tar -zxvf mariadb-10.2.35-linux-x86_64.tar.gz -C /usr/local/
//-C表示指定文件的路径;解压完是mariadb-10.2.35-linux-x86_64,
编译时使用的mysql目录,创建软连接或者更改目录名称,此刻会创建存放数据库程序的第一个文件夹
//3、创建软连接
[root@localhost local]# ln -s mariadb-10.2.35-linux-x86_64/ mysql
//因为编译的时候使用的是mysql这个文件夹,建议创建软连接;也是可以的
[root@localhost local]# ll
lrwxrwxrwx 1 root root 29 Nov 6 17:11 mysql -> mariadb-10.2.35-linux-x86_64/
//更改文件的所有者(不强制更改)
[root@localhost local]# ll mysql/ //查看文件夹发现文件的所有者都是1000,
total 176
drwxrwxr-x 2 1000 1000 4096 Oct 23 01:55 bin
[root@localhost local]# chown -R root mysql/ //只改文件的所有者,所属组不会发生变化;
[root@localhost local]# ll mysql/
drwxrwxr-x 2 root 1000 4096 Oct 23 01:55 bin
[root@localhost local]# chown -R root: mysql/ //root:加上冒号表示所属组也更改,
或者root:root也是同理
[root@localhost local]# ll mysql/
drwxrwxr-x 2 root root 4096 Oct 23 01:55 bin
2、配置环境变量:
//4、配置环境变量:
[root@localhost ~]# ls /usr/local/mysql/bin/ //数据库的二进制文件
aria_chk mbstream mysqladmin
//放到PATH变量里面
[root@localhost local]# echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh
//把mysql的二进制文件放到PATh变量里面
[root@localhost local]# . /etc/profile.d/mysql.sh //使变量生效
[root@localhost local]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
3、创建数据存放目录,若是生产数据,建议使用逻辑卷(逻辑卷创建教程:知识点一)
//5、创建存放生产数据目录mysqldb(在/data下挂载逻辑卷后创建mysqldb)
[root@localhost ~]# df -h
/dev/mapper/vg0-lv_mysql 62879748 32992 62846756 1% /data
[root@localhost ~]# mkdir /data/mysqldb
[root@localhost ~]# chown mysql.mysql /data/mysqldb //把改文件夹所有者所属组都更改为mysql
[root@localhost ~]# ll -d /data/mysqldb/
drwxr-xr-x 2 mysql mysql 6 Nov 6 17:57 /data/mysqldb/
[root@localhost ~]# chmod 770 /data/mysqldb/ //更改文件的权限,其他人不可以访问该文件夹
[root@localhost ~]# ll -d /data/mysqldb/
drwxrwx--- 2 mysql mysql 6 Nov 6 17:57 /data/mysqldb/
4、检查程序所需要的两个文件夹:
[root@localhost ~]# ll /usr/local/mysql/ -d //数据库程序存放的位置
drwxrwxr-x 12 root root 282 Nov 3 02:30 /usr/local/mysql/
[root@localhost ~]# ll /data/mysqldb/ -d //收集用户数据的,生产数据存放位置
drwxrwx--- 2 mysql mysql 6 Nov 6 17:57 /data/mysqldb/
5、生成mysql数据库文件:调用脚本(进入到二进制程序所在的文件夹里面);只是指定生成数据库文件。
//6、生成数据库数据文件
[root@localhost ~]# cd /usr/local/mysql/ //进入到二进制程序文件夹
[root@localhost mysql]# ls scripts/ //生成数据库文件调用脚本,该脚本在scripts目录之下。
mysql_install_db
[root@localhost scripts]# ./mysql_install_db --datadir=/data/mysqldb --user=mysql
//--datadir 指定生成的数据库存放位置
FATAL ERROR: Could not find ./bin/my_print_defaults
//安装数据库;在scripty下执行会报错;
//因为该mysql_install_db脚本会调用一些文件mysql目录下的一些文件,只能切回上一级目录
[root@localhost mysql]# scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
//执行该脚本,出现ok说明调用脚本成功,生成数据库成功
Installing MariaDB/MySQL system tables in ‘/data/mysqldb‘ ...
OK
[root@localhost mysql]# ll /data/mysqldb/ //可以在我们准备的收集用户数据的目录下看到文件
total 110620
-rw-rw---- 1 mysql mysql 16384 Nov 6 18:13 aria_log.00000001
6、配置启动程序脚本:修改二进制文件,告诉二进制文件启动脚本启动程序在什么位置(知识点二、知识点三);
//7、修改启动程序二进制文件
[root@localhost 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 //中小型环境用该程序(针对内存来说的)
[root@localhost mysql]# cat support-files/mysql-log-rotate //文件里会有简单的说明
# This logname can be set in /etc/my.cnf
# by setting the variable "log-error"
[root@localhost ~]# cp /etc/my.cnf{,.bak} //备份我们之前的配置文件 shell语句备份范例
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf
//我们配置huge.cnf环境程序,覆盖到my.cnf我们的配置文件
cp: overwrite ‘/etc/my.cnf’?y //表示同意覆盖
//编辑启动程序配置文件
[root@localhost 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、设置开机自启动
[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld
//把启动脚本cp到/etc/init.d/并改名称为mysqld
[root@localhost mysql]# ll /etc/init.d/mysqld
[root@localhost mysql]# chkconfig --add mysqld //默认情况下没有设置开机自启动;添加到开机自启动中
[root@localhost mysql]# chkconfig --list
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]# systemctl start mysql.service
//9、MySQL数据库安全设置:
[root@localhost ~]# mysql_secure_installation
//10、登入mysql数据库
[root@localhost ~]# mysql -uroot -p123456
Server version: 10.2.35
MariaDB [(none)]> status
UNIX socket: /tmp/mysql.sock
知识点一:
1、在虚拟机下添加一块空磁盘并创建逻辑卷(用来作为mysql数据库存放生产数据的目录)
//1、在虚拟机下添加新磁盘;注册新添加的磁盘:
[root@localhost ~]# echo ‘- - -‘ > /sys/class/scsi_host/host2/scan
[root@localhost ~]# lsblk
sdb 8:48 0 10G 0 disk
//2、创建逻辑卷(创建PV)
[root@localhost ~]# pvcreate /dev/sdb //sdb创建为物理卷pv
Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# pvdisplay
"/dev/sdb" is a new physical volume of "60.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
//3、把这块盘添加到卷组里面vg(创建vg)(添加到lv)
[root@localhost ~]# vgcreate vg0 /dev/sdb
Volume group "vg0" successfully created
[root@localhost ~]# lvcreate -n lv_mysql -l 100%FREE vg0
//创建逻辑卷,-n:为该逻辑卷命名为lv_mysql, -l:指定大小,100%GREE:全部使用
[root@localhost ~]# lvs //可以查看到该逻辑卷的大小
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_mysql vg0 -wi-a----- <60.00g
//4、创建文件系统:
[root@localhost ~]# mkfs.xfs /dev/vg0/lv_mysql //将该逻辑卷格式化为.xfs文件系统
[root@localhost ~]# blkid //对文件系统类型查询
/dev/mapper/vg0-lv_mysql: UUID="9f2bca6b-5748-497a-b6ea-4194b8dcd237" TYPE="xfs"
//5、把创建好的逻辑卷挂载到一个目录之下(挂载)
[root@localhost ~]# getent passwd mysql //查看mysql数据存放目录位置
mysql:x:996:994::/data/mysqldb:/sbin/nologin
[root@localhost ~]# mkdir /data/
[root@localhost ~]# vim /etc/fstab //挂在的话还是需要写到磁盘里面,配置
UUID=9f2bca6b-5748-497a-b6ea-4194b8dcd237 /data/ xfs defaults 0 0
//在vim下直接查询 :r!blkid /dev/vg0/lv_mysql 该语句直接查询它的UID
[root@localhost ~]# mount -a //挂载
[root@localhost ~]# df -h
/dev/mapper/vg0-lv_mysql 62879748 32992 62846756 1% /data
//6、创建生产数据存放目录mysqdb
[root@localhost ~]# mkdir /data/mysqldb
知识点二:
2、配置启动程序脚本:修改二进制文件,发现mysql程序目录没有读写权限
//1、我们配置huge.cnf环境程序,覆盖到my.cnf我们的配置文件
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’?y //表示同意覆盖
//2、编辑启动程序配置文件
[root@localhost 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、启动时会报错:
#问题现象:
[root@localhost ~]# systemctl start mysql.service
‘/data/mysqldb/localhost.localdomain.err‘ //错误日志地址
#处理思路:
[root@localhost ~]# 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文件
[root@localhost ~]# ss -tunlp //查询到3306端口未开启,没有程序监听,
[root@localhost ~]# ll /usr/local/mysql/ -d
//查看到/usr/local/mysql/文件夹没有给mysql授予读写权限
drwxrwxr-x 12 root root 282 Nov 3 02:30 /usr/local/mysql/
#解决方案:
[root@localhost mysql]# setfacl -R -m u:mysql:rwx /usr/local/mysql/
// -R:对任何数据都有写权限; u:mysql:rwx :针对用户mysql有读写执行权限;
[root@localhost mysql]# ll /usr/local/mysql/ -d
drwxrwxr-x+ 12 root root 4096 Nov 3 02:30 /usr/local/mysql/
// x+ 可以看到给mysql目录授予了X+权限
[root@localhost mysql]# systemctl start mysqld.service //现在可以正常启动了
[root@localhost ~]# ss -tunlp //此时可以看到3306端口了
tcp LISTEN 0 80 [::]:3306 users:(("mysqld",pid=118467,fd=21))
知识点三:
3、配置启动程序脚本:修改二进制文件,发现安全脚本找不到/tmp.my.sock文件位置
//1、我们配置huge.cnf环境程序,覆盖到my.cnf我们的配置文件
[root@localhost mysql]# cp support-files/my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’?y //表示同意覆盖
//2、编辑启动程序配置文件
[root@localhost 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、执行安全脚本时报错:
#问题现象:
[root@localhost ~]# mysql_secure_installation //执行边安全脚本
MySQL server through socket ‘/tmp/mysql.sock‘
//使用/tmp/mysql.sock文件,我们之前配置是在/usr/local/mysql/mysql.sock
#解决思路:
[root@localhost ~]# less /usr/local/mysql/bin/mysql_secure_installation
//查看该脚本是不是定义了路径
#解决方案:
[root@localhost ~]# vim /etc/my.cnf //更改mysql.sock文件路径
socket = /tmp/mysql.sock
socket = /tmp/mysql.sock
[root@localhost 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
[root@localhost ~]# mysql_secure_installation //此刻就可以正常执行了
NO.A.0003——mysql/mariadb10.2.35——二进制安装/配置
标签:开机自启动 off 位置 用户 逻辑卷 defaults overwrite acl att
原文地址:https://blog.51cto.com/15005403/2552277