MYSQL部署
由于yam方式安装的mysql太分散不好管理我这里就写了一下二进制包的安装方法
二进制包的安装
获得官方编译好了的包文件
- https://downloads.mariadb.org/mariadb/10.2.29/ 这个地址然后找到自己需要的包下载(德国ip)
- https://downloads.mariadb.org/interstitial/mariadb-10.2.29/bintar-linux-systemd-x86_64/mariadb-10.2.29-linux-systemd-x86_64.tar.gz/from/http%3A//mirror.netinch.com/pub/mariadb/ (清华源,快很多不知道问啥)
后续下载源码编译安装也可以在这里下载
安装前配置
- 默认最小安装
- 下载对应的包到家目录
- 推荐使用逻辑卷,这里我就用xfs文件系统
- 关闭selinux
- 关闭防火墙
- 网卡只要能连网就好(为了下载网上的包)
- 将mysql的用户创建好,不会默认创建
- 系统账户
- sbin/nologin
用户名:mysql,可自己指定uid
解压二进制包
- 官方退出了两个二进制包,分别是适用于centos7之后的带systemd的包mariadb-10.2.29-linux-systemd-x86_64.tar.gz
- 另一个是:mariadb-10.2.29-linux-x86_64.tar.gz
- 因为在cento7之后系统的第一个进程从init变成了systemd 所以低版本用第一个包就不方便使用,总体来说步骤差不多只有在后面启动的时候会有微小差别,我会前面以systemd方式演示,到不同的时候说明那里会有不同点
- tar xf mariadb-10.2.29-linux-systemd-x86_64.tar.gz -C /usr/locad/ 解压文件到/usr/locad/目录下
- 改一个名字: cd /usr/locad ; mv mariadb-10.2.29-linux-systemd-x86_64 mysql
更改所属用户所属组 : chomn -R mysql:root mysql
创建数据库所需要的PATH变量文件
- cd /etc/profile.d/ ;
- vim mariadb.sh
- 内容:
- !#/bin/bash
- export PATH=/usr/local/mysql/bin:$PATH
下载安装mysql的时候所必需的的io依赖包
- yum -y install libaio
- 贴一个对这个包的介绍帖子
https://blog.csdn.net/naipeng/article/details/89918482
执行mysql下的安装脚本
- cd /usr/locad/mysql
- ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
- 注意安装目录 datadir 可以自己定义,我这里选择安装在data下
- 默认用户: user 使用 新建好了的系统用户mysql
执行后会出现安装完成的提示
修改启动配置文件:
- 服务端
- vim /etc/my.cnf
- [mysqld]
- datadir=data/mysql (前面安装的时候填写的路径)
- socket=/data/mysql/mysql.sock
- 客户端
- vim /etc/my.cnf.d/mysql-clients.cnf
- socket=/data/mysql/mysql.sock
将启动文件放到系统的system文件夹下
- systemd方式
cp support-files/systemd/mariadb.service /usr/lib/systemd/system/
- init方式 (前面步骤基本一样)
cp support-files/mysql.server /etc/init.d/mariadb
开启服务
- systemd 开启方式
- systemct start mariadb
- init 开启方式
- service mariadb start
连接
- mysql
MariaDB[none]>
基础的安全加固提要
- 安全加固脚本 mysql_secure_installation
- 为root用户设置密码
- 删除匿名账号
- 取消root用户远程登录
- 删除test库和对test库的访问权限
- 刷新授权表使修改生效
- 贴一个地址https://blog.csdn.net/iteye_19615/article/details/82618332 对这个安全脚本讲解、
写个脚本实现 (适用centos7)
#!/bin/bash ##参数1 1决定是去网上下载,否则填写参数0,然后跟目录 # 关防火墙 systemctl stop firewalld echo "防火墙已关闭" # 关seLinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config echo "selinux已关闭" # 关seLinux # ping网络 ping -c 1 -w 1 www.baidu.com &>/dev/null if [ ! $? ] ; then echo "请将网卡配置联通网络" exit 3 ; fi echo "网卡正常" #yum 源配置 cat > /etc/yum.repos.d/mysqlscript.repo <<eof [mysqlyum] name=mysqlyum baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ gpgcheck=0 penabled=0 eof echo "阿里yum配置完成,等待检测" #查看yum是否报错 yum repolist &> /dev/null if [ ! $? ] ;then echo "yum配置出现问题"; exit 3; fi #检测文件是否存在 testFile=/etc/yum.repos.d/mysqlscript.repo if [[ ! -f "$testFile" ]];then echo"yum源创建失败"; exit 3; fi echo "yum检测完成" yum -y install wget &>/dev/null if [ ! $? ] ;then echo "下载出现问题" ; exit 3 fi if [[ $1 >=1 ]] ;then #选择确定从网上下载 if [ -d "/data" ]; then #当data文件夹存在的时候 mkdir mysql; cd /data/mysql; echo "正在下载文件请稍等 " wget https://downloads.mariadb.org/f/mariadb-10.2.29/bintar-linux-systemd-x86_64/mariadb-10.2.29-linux-systemd-x86_64.tar.gz/from/http%3A//mirror.netinch.com/pub/mariadb/?serve -O mariadb-10.2.29-linux-systemd-x86_64.tar.gz &>/dev/null ; if [ $? ] ;then cd /data/mysql; fis="mariadb-10.2.29-linux-systemd-x86_64.tar.gz" if [ -f $fis ]; then echo "下载完成"; fi else echo " 下载失败,请重试,或者检查网络 " fi #当文件夹不存在的时候 else echo "请在跟下分配一个足够空间的/data文件目录,要求大于1G" exit 3 fi else #用户已经下载好了的情况下 echo "您选择了自行下载放到/data/mysql/下,您选择的是:$2 " cd /data/mysql/; mardb='mariadb-10.2.29-linux-systemd-x86_64.tar.gz' if [ -f $mardb ]; then echo "放置成功"; else echo $? echo "未放置到指定目录,如果放置了,请确保目录名称相同"; exit 3 ; fi fi # 到这一步的时候默认包已经放在了、data下的mysql目录中了 echo "创建系统用户mysql" useradd -r -u 306 -s /sbin/nologin mysql &> /dev/null if [ $? ] ;then echo "系统用户创建完成"; fi #开始解压压缩包 echo "解压包到/usr/local/下"; pwd tar xf mariadb-10.2.29-linux-systemd-x86_64.tar.gz -C /usr/local/ if [ $? ] ;then #解压完成 前往、usr/local下重命名并修改权限 cd /usr/local/ ; echo "解压到当前路径" ;pwd else echo "解压失败" ; exit fi # 创建PATH变量 echo "开始创建环境变量脚本" cat > /etc/profile.d/mariadb.sh <<eof #!/bin/bash export PATH=/usr/local/mysql/bin:$PATH eof cd /etc/profile.d/; if [ -f mariadb.sh ] ; then echo "创建成功"; source /etc/profile.d/mariadb.sh; else echo "创建失败" exit 3 fi #下载依赖包 echo "下载所需io依赖包" ; yum -y install libaio ; if [ $? ];then echo ”下载完成“; else echo "依赖包下载失败"; exit 3; fi # 执行安装脚本 echo " 开始安装mariadb " cd /usr/local/mysql/; . /scripts/mysql_install_db --datadir=/data/mysql --user=mysql if [ $? ];then echo "安装完成"; else echo "安装脚本出现问题"; exit 3 ; fi #修改配置文件 echo "正在修改服务端配置文件:/etc/my.cnf" cat > /etc/my.cnf<<eof [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock symbolic-links=0 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid !includedir /etc/my.cnf.d eof echo "正在修改客户端配置文件:/etc/my.cnf.d/mysql-clients.cnf " cat > /etc/my.cnf.d/mysql-clients.cnf<<eof [mysql] socket=/data/mysql/mysql.sock [mysql_upgrade] [mysqladmin] [mysqlbinlog] [mysqlcheck] [mysqldump] [mysqlimport] [mysqlshow] [mysqlslap] eof echo "客户端配置文件修改完成" #将启动程序放到系统启动项中 echo "设置启动文件" cd /usr/local/mysql/; cp support-files/systemd/mariadb.service /usr/lib/systemd/system/ #开启服务 systemctl start mariadb echo "mysql配置完成 "