(0.2.3)Linux平台下二进制方式安装mysql

Posted 郭大侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(0.2.3)Linux平台下二进制方式安装mysql相关的知识,希望对你有一定的参考价值。

关键词:mysql安装,二进制安装,基于centos6.5,mysql5.7.x

 

Linux平台下二进制方式安装卸载mysql

本章节:二进制安装mysql

 相关参考资源:https://www.jianshu.com/p/0d628b2f7476

官方安装文档:https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html

目录:5.7.6之后版本

1、基于Linux平台的Mysql项目场景介绍

2、mysql数据库运行环境准备-最优配置

3、如何下载mysql数据库

4、linux平台下二进制文件方式安装mysql

4.1、环境检查(libaio包、卸载现有数据库,检查删除现有数据库 rpm -qa |grep mysql,-e参数为删除)

4.2、安装过程

(1)下载文件、上传安装程序

(2)创建用户,组,创建目录

(3)解压安装程序包 (tar -zxvf file)

(4)修改权限(授权用户对解压目录的权限) 

(5)配置环境变量(以便可以直接运行mysql命令,vi ~/.bash_profile) 

(6)准备参数配置文件 (my.cnf)

  如果一个机器上有安装多个mysql版本,可以在配置文件中[mysql-5.7] 这样,来指定版本的配置参数。

(7)开始初始化Mysql (mysqld --defaults-file=/mysql/data/3306/my.cnf --initialize --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data)

  如果是mysql5.6则是(mysql/bin目录下的,./scripts/mysql_install_db --user=mysql --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/)

  自带有配置文件模板:mysql/bin/support-files/my-default.cnf

(8)配置启动脚本 (/mysql/app/mysql/support-files/mysql.server)

(9)启停验证,日志查看 

【1】使用服务启动与停止mysql(适合单实例,拷贝(8)中修改好的mysql.server文件到 /etc/init.d/ 目录下,生成服务)
【2】设置mysql服务自启
【3】重启验证
【4】使用文件启动与停止mysql(可以适用于单实例、多实例)
【5】修改配置文件,解决密码过期问题(比较危险,设置了之后连密码都不要,跳过权限表)
【6】登陆测试

(10)后期配置(密码修改,启动远程访问) 

【1】解决密码过期问题的两种方式(配置文件skip-grant-tables,mysql.user表password_expired字段设置)
【2】修改密码(参考:修改密码的四种方式)
【3】启用远程连接的2种方式(修改root的host为%,重新授权新建root@%)

(11)远程连接测试

(12)删除二进制安装的mysql(停止服务,删除相关数据文件即可)

【本文5.7.24自动化安装shell脚本】(不可重复跑)

【相关5.7安装参考笔记】

5、Linux平台下通过源码方式安装mysql

6、Linux平台下通过yum方式安装mysql

7、Linux平台下通过RPM方式安装mysql

8、mysql安装后的配置与运行参数设置

9、mysql安装后的测试与远程连接

10、mysql基本管理命令

11、Linux平台如何卸载mysql版本

 

 

思路:

【1】环境检查

【1.1】libaio

  检查,libaio(异步包要装好),没装的话直接挂载光驱里的操作系统iso文件,做yum源安装(详情见:(0.2.1)mysql数据库环境-操作系统配置  2.4Yum源配置

    

#不同版本安装的时候可能会缺少libaio.so.1文件

  使用 wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm 
  rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm 可以安装缺少的文件

 

【1.2】删除系统自带的mysql 、mariadb

    rpm -qa|grep mysql  #检查是否有

    rpm -qa|grep mariadb   #检查是否有

    rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64   #用这个方式以此删除所有的,如有依赖报错可能需要先删除另外一个

    

      如果这种报错就使用  --nodeps参数,或者直接 yum remove mysql*    

  

【2】安装过程

【2.1】下载文件、上传安装程序



  mkdir -p /mysql/app

  使用CRT上传、XSHELL等工具上传到该目录,这里只做了CRT链接,其他工具具体可以百度。

【2.2】创建用户,组,创建目录

groupadd mysql

useradd mysql -r -g mysql -s /sbin/false  

mkdir -p /mysql/data/3306/data

mkdir -p /mysql/log/3306

    useradd -r:添加系统用户  -g:指定分组  -s:指定登录的shell,这里操作是不让它登录OS

【2.3】解压安装程序包

    cd /mysql/app

  tar -zxvf 安装包名(比如我这里如下)

     tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz

  解压后如图

  为了保护原有文件名好识别版本等信息,再做个软链接,

    ln -s mysql-5.7.24-linux-glibc2.12-x86_64 mysql,软链接如下 mysql->mysql-5.7.24…………

    

  --进入解压出来的文件,查看mysql二进制包目录信息

    cd /mysql      #通过软链接进入

    

    【README】:读这个文件了解Mysql情况  【share】:放一些错误的信息,比如数据字典和SQL的安装

    【support-files】:mysql的支持文件

 

【2.4】修改权限(授权用户对解压目录的权限)

    chown -R mysql:mysql /mysql      #把Mysql目录的拥有者设置为mysql用户   -R 为递归,表示/mysql即mysql下所有文件/文件夹均生效

【2.5】配置环境变量(以便可以直接运行mysql命令)

    vi ~/.bash_profile

  在PATH后面加上  \':\' 再加上mysql/bin目录的绝对路径即可

  

  配置完后,记得source ~/.bash_profile ,这样才能立马生效

   PS小建议:

    #全局环境变量:也可以使用该句:echo "export PATH=/mysql/app/mysql/bin:$PATH">>/etc/profile ,source /etc/profile

    #这样可以避免安装了多个Mysql版本而使用的mysql/mysqld/mysqldump等等bin目录下的命令是用的其他版本的)

                     

【2.6】准备参数配置文件

  (1)查看参数配置文件访问启动路径

    mysql --help |grep my.cnf

    

    参数文件默认读取顺序:【1】/etc/my.cnf  【2】/etc/mysql/my.cnf  【3】/usr/local/mysql/my.cnf  【4】~/.my.cnf

  

#以下参考命令可以在启动时指定配置文件/参数文件的路径
mysqld_safe
--default-file=/mysql/data/3306/my.cnf &

  (2)参数文件配置:【my.cnf简单配置参考文章1】【详细配置参考:非常全面的配置与思考详细配置与思考

  

[client]
port = 3306
socket = /mysql/data/3306/mysql.sock
default-character-set=utf8

[mysql]
disable-auto-rehash #允许通过TAB键提示
default-character-set = utf8
connect-timeout = 10

[mysqld]
server-id = 3306
port = 3306
user = mysql
socket = /mysql/data/3306/mysql.sock
pid-file = /mysql/data/3306/mysql.pid
basedir = /mysql/app/mysql/
datadir = /mysql/data/3306/data
#bind_address = 10.10.10.11
autocommit = 0

character-set-server=utf8
explicit_defaults_for_timestamp=true
lower_case_table_names=1
back_log=103
max_connections=10000
max_connect_errors=100000
table_open_cache=512
external-locking=FALSE
max_allowed_packet=32M
sort_buffer_size=2M
join_buffer_size=2M
thread_cache_size=51
query_cache_size=32M
#query_cache_limit=4M
transaction_isolation=READ-COMMITTED
tmp_table_size=96M
max_heap_table_size=96M


###***logs
long_query_time = 10
slow_query_log = 1
slow_query_log_file=/mysql/log/3306/slow.log

#log-warnings = 1
log_error_verbosity=3

log-error = /mysql/log/3306/mysql.err
log_output = FILE #参数log_output指定了慢查询输出的格式,默认为FILE,你可以将它设为TABLE,然后就可以查询mysql架构下的slow_log表了


#log-queries-not-using-indexes
#log-slow-slave-statements
#general_log = 0
#general_log_file = /mysql/log/3306/mysql.log
#max_binlog_size = 1G
#max_relay_log_size = 1G


## replication
#log-bin=mysql-bin
#server-id=1
#binlog_format= ROW
#gtid_mode = on
#enforce_gtid_consistency = 1
#log_slave_updates   = 1
#master-info-repository=TABLE
#relay-log-info-repository=TABLE

#  innodbstorageengineparameters
innodb_buffer_pool_size=1G
innodb_data_file_path=ibdata1:1G:autoextend:max:5G #redo
innodb_temp_data_file_path = ibtemp1:200M:autoextend:max:10G
#innodb_file_io_threads=4  #默认的是4
innodb_log_buffer_size=16M
innodb_log_file_size=256M  #undo
innodb_log_files_in_group=2
innodb_lock_wait_timeout=50
innodb_file_per_table=1      #独立表空间
my.cnf

 5.6中,需要把auto_commit 参数先注释掉,才能安心初始化。初始化安装完成后,可以把该参数再加上。

  

   在/mysql/data/3306/ 下新建my.cnf文件,然后把上述代码复制进文件

  (3)然后要重新授权,因为当前登录是root账户,新文件属于root

#创建文件
vi  /mysql/data/3306/my.cnf

#张贴代码

#创建错误日志文件(不创建可能起不来)
touch /mysql/data/3306/mysql.err

#授权
chown -R mysql:mysql /mysql/log/3306/

 

【2.7】开始初始化Mysql 

  mysqld --defaults-file=/mysql/data/3306/my.cnf --initialize --user=mysql --basedir=/mysql/app/mysql --datadir=/mysql/data/3306/data 

 #如果是mysql5.6则是(mysql/bin目录下的,./scripts/mysql_install_db --user=mysql --defaults-file=/usr/local/mysql/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/)
 #自带有配置文件模板:mysql/bin/support-files/my-default.cnf
#其他相关信息安装方面一致

 

############  这一步可以省略 开始 ########################

【2.8】配置启动脚本(把数据库配置成服务以便可以使用 service mysql start 启动)

  【1】查看启动路径,mysql --help |grep my.cnf

  

  【2】修改源码文件  /mysql/app/support-script/mysql.server 

    1) cp mysql.server mysql

    2) vi mysql(这一步可以省略)

    对照修改查看。

         

    把引用参数文件的路径由【1】中的默认路径更改为自定义路径。即在下图加上--defaults-file=/mysql/data/3306/my.cnf  (即自定义的参数文件路径)

    

  

 ######################这一步可以胜率  结束 ##################################

 

【2.9】启停验证,日志查看

  

  (1)使用服务启动与停止mysql(适合单实例)

    拷贝修改的名为  mysql  的文件到 etc/init.d 目录下下去(这个目录里面包含了一系列系统里面服务的开启和停止的脚本,并且文件名即服务名)

    cp mysql.server mysql

    cp mysql /etc/init.d    

    ln -s /mysql/data/3306/my.cnf /etc/my.cnf  #做软连接,以便可以把mysql当做linux系统服务启动

     设置好后,

    启动命令:service mysql start (如果是centos7以上则是,systemctl start mysql.service)

    关闭命令:service mysql stop (如果是centos7以上则是,systemctl stop mysql.service)

     本文是centos6.5,操作如下:

   

  (2)设置mysql服务自启

    

    如果是关闭的就可以设置如下代码增加自启(详细参考:linux服务管理与启停

    chkconfig --level 2345 mysql on 

   (3)重启验证

    ps -ef |grep mysql

    

   (4)使用文件启动与停止mysql(可以适用于单实例、多实例)

    新建一个文件,用mysql_safe的方式启动mysql实例(语句可以从上面的ps -ef |grep mysql 中获取)

    

    用sqladmin关闭,sqladmin -uroot -p shutdown,发现失败了,说sock文件不存在!

    

     

    那么这里,我们发现ps -ef| grep mysql 这上面显示了sock文件在哪里,我们用-S参数加上。然后用mysqladmin 关闭,这里使用的是系统初始化后的默认密码;

    sock文件说不存在与/tmp/mysql.sock,可以直接软连接 ln -s /mysql/data/3306/mysql.sock /tmp/mysql.sock

    这里提示我们密码过期了,要我们修改才行。

  (5)修改配置文件,解决密码过期问题(比较危险,设置了之后连密码都不要,跳过权限表)

    [mysqld]下面增加一行

    skip-grant-tables

  (6)登陆测试

    1)直接使用mysql登陆,发现又要管sock(密码再错误日志中)

      

    2)解决每次都要使用 -S /sock目录 参数

      把我们的sock文件,做一个软链接到 /tmp 目录下去

      ln -s /mysql/data/3306/mysql.sock /tmp

      

      成功

      

【2.10】后期配置(密码修改,启动远程访问)

  【1】解决密码过期问题的两种方式(配置文件,mysql.user表password_expired字段设置)

    1)修改my.cnf配置文件:[mysqld]下面增加一行skip-grant-tables  (比较危险,设置了之后连密码都不要,跳过权限表)

    2)mysql.user表password_expired字段设置为N

  【2】修改密码(参考:修改密码的四种方式

    1)set password = password(\'123456\');     flush privileges;

    2)mysqladmin -u用户名 -p旧密码 password 新密码 

    3)update mysql.user set password=password(\'123\') where user=\'root\' and host=\'localhost\';  

 

  【3】启用远程连接的2种方式(修改root的host为%,重新授权新建root@%)

     1)在本机登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从”localhost”改为\'%\'。

select host,user from mysql.user where user=\'root\';
update mysql.user set host = \'%\' where user =\'root\'; flush privileges;

    2)授权新建一个主机为%的root账户   

grant all privileges on *.* to \'root\'@\'%\' identified by \'123456\' with option;
flush privileges;

(11)远程连接测试

【2.11】如何删除二进制安装的mysql

(参考:https://www.cnblogs.com/kerrycode/p/4364465.html

  1)停止服务

  2)删除所有相关目录即可

  本文需要清理的就是

   /mysql/data/

   /mysql/log/

  /mysql/app/

  /etc/init.d/mysql

 

【本文5.7.24自动化安装shell脚本】(不可重复跑)  

 

前提:

  (1)把mysql二进制安装文件放在 根目录(/)

  (1)把mysql 配置文件my.cnf放在 根目录(/)

#!/bin/bash
#the mysql install file in path: /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz

echo \'begin check mysql exist......\' |tee -a 1.txt
flag=`rpm -qa|grep mysql -c`
mysql_name=`rpm -qa|grep mysql`
if [ ${flag} -ne 0 ];then
    echo -n \'begin delete old mysqlinfo......\'|tee -a 1.txt
    rpm -e --nodeps ${mysql_name} 2>>1.txt
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi
fi


echo -n \'begin add group mysql......\'|tee -a 1.txt
    groupadd mysql
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi

echo -n \'begin add user mysql......\'|tee -a 1.txt
    useradd mysql -r -g mysql -s /bin/false
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi
    
    
echo -n \'begin mkdir mysql dir......\'|tee -a 1.txt
    mkdir -p /mysql/app
    mkdir -p /mysql/data/3306
    mkdir -p /mysql/log/3306
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi

echo -n \'cp /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz to /mysql/app......\'|tee -a 1.txt
    cp /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz /mysql/app/
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi
        

echo -n \'cp /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz to /mysql/app......\'|tee -a 1.txt
    cp /mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz /mysql/app/
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi    
    
echo -n \'uncompression mysql install file......\'|tee -a 1.txt
    cd /mysql/app 
    tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi    

echo -n \'create ln -s mysql_install_dir to mysql......\'|tee -a 1.txt
    ln -s mysql-5.7.26-linux-glibc2.12-x86_64 mysql
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi    
    
echo -n \'configure the $path......\'|tee -a 1.txt
    echo \'export PATH=/mysql/app/mysql/bin:$PATH\'>>/etc/profile
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi        
    source /etc/profile

echo -n \'cp /my.cnf to /etc/my.cnf......\'|tee -a 1.txt
    cp /my.cnf /etc/my.cnf
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi        

echo -n \'mysqld --initialize --user=mysql......\'|tee -a 1.txt
    mysqld --initialize --user=mysql
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi        


echo -n \'cp my.server file to /etc/init.d/mysql......\'|tee -a 1.txt
    cp /mysql/app/support-script/mysql.server /etc/init.d/mysql
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi        

echo -n \'chkconfig mysql on......\'|tee -a 1.txt
    chkconfig mysql on
    if [ $? -eq 0 ];then
        echo \'OK\'|tee -a 1.txt    
    else
        echo \'Failed\'|tee -a 1.txt
        exit
    fi    

echo -n \'start mysql service ......\'|tee -a 1.txt
    flag=`service mysql status |grep SUCCESS -c`
    if [ ${flag} -ne 0 ];then
        echo -n \'ok\'|tee -a 1.txt
    else
        service mysql start
        if [ $? -eq 0 ];then
            echo \'OK\'|tee -a 1.txt
        else
            echo \'Failed\'|tee -a 1.txt
            exit
        fi
    fi
    

 

【相关5.7安装参考笔记】

#!/bin/sh
#建立用户组
groupadd mysql
#建立用户
useradd -r -g mysql mysql
#切换到解压路径,解压二进制mysql包
cd /usr/local
if [ -d mysql-5.7.9-linux-glibc2.5-x86_64 ]; then 
echo "mysql folder is exists"
else
tar -xzvf  mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz
fi
#做软链接起名为mysql
ln -s  mysql-5.7.9-linux-glibc2.5-x86_64 mysql
#切换到mysql(mysql二进制安装文件 解压出来的软连接目录)目录下
cd mysql
#添加环境变量
echo "export PATH=/usr/local/mysql/bin:$PATH">>/etc/profile
#重新引用环境变量以便即时生效
source /etc/profile
#关防火墙
service iptables stop
chkconfig iptables off

#构造mysql自定义目录
if [ -d mysql-files ]; then
echo "mysql-files is exists"
else
mkdir mysql-files
fi
chmod 770 mysql-files
chown -R mysql .
chgrp -R mysql .
if [ -d data ]; then
mv data data_$(date+%Y%m%d)
else 
echo "data is not exist"
fi
#初始化mysql,根据默认配置文件/etc/my.cnf or /etc/mysql/my.cnf  or ./my.cnf
./bin/mysqld --initialize --user=mysql

#修改所有者权限
chown -R root .
chown -R mysql data mysql-files
#启动mysql
./bin/mysqld_safe --user=mysql &
#复制mysql.server文件以便成为服务
cp -rf support-files/mysql.server /etc/init.d/mysql.server
#./usr/local/mysql/support-files/mysql.server stop
ps -ef|grep mysql|grep -v grep |awk -F\' \' \'{print $2}\'|xargs kill -s 9
       #serivce mysql stop
./bin/mysqld_safe --skip-grant-tables &
      #service mysql start
      #./usr/local/mysql/support-files/mysql.server start
mysql -uroot -p
use mysql;
update mysql.user set authentication_string=password(\'123456\') where user=\'root\';
flush privileges;
quit;

mysql -uroot -p123456
set password for \'root\'@\'localhost\'=password("123456");
flush privileges;

 

15.安装完成后的优化(删除多余数据库与账户)

15.1、查看数据库的版本信息

1
2
3
4
5
6
7
MariaDB [(none)]> select version();
+----------------+
| version()      |
+----------------+
| 5.5.52-MariaDB |
+----------------+
1 row in set (0.18 sec)

15.2、删除多余的账号(除root和localhost的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MariaDB [(none)]> use mysql
MariaDB [mysql]> select user,host from mysql.user;
+------+------------------------+
| user | host                   |
+------+------------------------+
| root | 127.0.0.1              |
| root | ::1                    |
|      | localhost              |
| root | localhost              |
|      | lvs-dr01.saltstack.com |
| root | lvs-dr01.saltstack.com |
+------+------------------------+
6 rows in set (0.03 sec)

(c)2006-2024 SYSTEM All Rights Reserved IT常识