晓夏

YoungCheung

Zhang Sir's technical way

尝试MySQL5.7各种安装姿势

浏览量:1230

一、背景介绍

       MySQL5.7系列出来N久,可是当前很多涉世未深的小伙伴连安装部署都不会,今天正好有点空闲时间,张sir将mysql5.7的各种安装方式带小伙伴们走一遍,顺便也提升下自己,如果有需要可以参考下哦(⊙o⊙)哦!!!

       我们都知道,软件安装一般常用的有yum、编译、二进制 方式,那么现在大家坐好老司机准备开车了啊。


二、YUM安装MySQL5.7 

2.1 yum安装

[root@linux-node1 ~]# cd /usr/local/src/
[root@linux-node1 src]# yum -y localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
[root@linux-node1 src]# yum -y install mysql-community-server mysql-community-devel

2.2 初始化

[root@linux-node1 ~]# systemctl start mysqld
[root@linux-node1 ~]# systemctl enable mysqld
[root@linux-node1 ~]# grep "password" /var/log/mysqld.log    #查看初始密码,需要启动后才能查看
[root@linux-node1 src]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.7.19
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

2.3 修改密码

[root@linux-node1 src]#mysql -uroot -p'eZa?x2q;&;l%'
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxx';

三、二进制安装单实例

3.1 下载源码包

[root@linux-node1 src]# wget   #下载很慢
[root@linux-node1 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz  #建议使用sohu

3.2 创建用户和组

[root@linux-node1 src]# useradd -g mysql -s /sbin/nologin mysql
[root@linux-node1 src]# groupadd mysql

3.3 解压

[root@linux-node1 src]# tar xf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz -C /usr/local/
[root@linux-node1 src]# cd /usr/local/
[root@linux-node1 data]# mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql

3.4 创建数据目录并授权

[root@linux-node1 data]# mkdir -p /data/3306/data/
[root@linux-node1 data]# chown -R mysql:mysql /data/

3.5 初始化数据库

[root@linux-node1 bin]# cd /usr/local/mysql/bin/
[root@linux-node1 bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data/

记住随机密码:wcOQMfybC9*V

3.6 拷贝配置文件

[root@linux-node1 bin]# cp /usr/local/mysql/support-files/my-default.cnf /data/3306/my.cnf
[root@linux-node1 bin]# chown -R mysql.mysql /data/
#vim /data/3306/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /data/3306/data
port = 3306
server_id = 129
socket = /tmp/mysql3306.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

3.7 启动

[root@linux-node1 data]# ./mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables &

3.8 登录

[root@linux-node1 bin]# mysql -S /tmp/mysql3306.sock
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

3.9 修改密码

MySQL [(none)]> update mysql.user set authentication_string=password('123456'), password_expired='N' where user='root'; 
MySQL [(none)]> flush privileges;

3.10 密码登录

[root@linux-node1 bin]# mysql -S /tmp/mysql3306.sock -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.7.17 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]>

3.11 启动脚本

#vim /data/3306/mysqld

#!/bin/sh
port=3306
mysql_user="root"
mysql_pwd="123456"
CmdPath="/usr/local/mysql/bin/"
mysql_sock="/tmp/mysql3306.sock"
#startup function
function_start_mysql()
{
    if [ ! -e "$mysql_sock" ];then
      printf "Starting MySQL...\n"
      cd /usr/local/mysql && \
      ./bin/mysqld_safe --defaults-file=/data/3306/my.cnf 2>&1 > /dev/null &
    else
      printf "MySQL is running...\n"
      exit
    fi
}
 
#stop function
function_stop_mysql()
{
    if [ ! -e "$mysql_sock" ];then
       printf "MySQL is stopped...\n"
       exit
    else
       printf "Stoping MySQL...\n"
       ${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown 2>&1 > /dev/null
   fi
}
 
#restart function
function_restart_mysql()
{
    printf "Restarting MySQL...\n"
    function_stop_mysql
    sleep 2
    function_start_mysql
}
 
case $1 in
start)
    function_start_mysql
;;
stop)
    function_stop_mysql
;;
restart)
    function_restart_mysql
;;
*)
    printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

二进制创建多实例只需要和上面一样创建目录初始化即可!


四、二进制安装mysqld_multi管理多实例

4.1 下载源码包

[root@linux-node1 src]# wget   #下载很慢
[root@linux-node1 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz  #建议使用sohu

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

4.2 创建用户和组

[root@linux-node1 src]# useradd -g mysql -s /sbin/nologin mysql
[root@linux-node1 src]# groupadd mysql

4.3 解压

[root@linux-node1 src]# tar xf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz -C /usr/local
[root@linux-node1 src]# cd /usr/local
[root@linux-node1 src]# mv mysql-5.7.17-linux-glibc2.5-x86_64 mysql
[root@linux-node1 src]# chown -R root.root mysql

4.4 创建相关目录及授权

[root@linux-node1 src]# mkdir /data/mysql/{3306,3307} -p
[root@linux-node1 src]# chown -R mysql:mysql /data/mysql*

4.5 提供多实例启动脚本

[root@linux-node1 data]# cd /usr/local/mysql/
[root@linux-node1 mysql]# cp support-files/mysqld_multi.server /etc/init.d/mysqld_multi
[root@linux-node1 mysql]# chmod +x /etc/init.d/mysqld_multi
[root@linux-node1 mysql]# chkconfig --add mysqld_multi
##注意:添加环境变量
#vim /etc/profile
export PATH=$PATH:/usr/local/mysql/bin

4.6  提供my.cnf脚本

[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /data/mysql/mysqld_multi.log
 
[mysqld1]
port = 3306
socket = /data/mysql/3306/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql/3306
pid-file = /data/mysql/3306/mysql.pid
user = mysql
log_error = /data/mysql/3306/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/3306/mysql-slow.log
general_log=ON
general_log_file= /data/mysql/3306/mysql.log
performance_schema = 0
explicit_defaults_for_timestamp
[mysqld2]
port = 3307
socket = /data/mysql/3307/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql/3307
pid-file = /data/mysql/3307/mysql.pid
user = mysql
log_error = /data/mysql/3307/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/3307/mysql-slow.log
general_log=ON
general_log_file= /data/mysql/3307/mysql.log
performance_schema = 0
explicit_defaults_for_timestamp


4.7 初始化数据库实例

[root@linux-node1 bin]# cd /usr/local/mysql/bin/
[root@linux-node1 bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3306
[root@linux-node1 bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3307

4.8 启动服务

[root@linux-node1 mysql]# /etc/init.d/mysqld_multi start
[root@linux-node1 mysql]# /etc/init.d/mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running

4.9登录并重置账号密码

#3306
[root@linux-node1 mysql]# mysql -uroot -pRlrPg97PLB%E  -S /data/mysql/3306/mysql.sock
mysql>alter user 'root'@'localhost' identified by '123456';
mysql> flush privileges;
#3307
[root@linux-node1 mysql]# mysql -uroot -p>fhaEp>yw3?n  -S /data/mysql/3306/mysql.sock
mysql>alter user 'root'@'localhost' identified by '123456';
mysql> flush privileges;

3.10 关闭实例

[root@linux-node1 mysql]#  mysqladmin -uroot -p123456 -S /data/mysql/3306/mysql.sock shutdown
[root@linux-node1 mysql]# /etc/init.d/mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is not running
MySQL server from group: mysqld2 is running

编译安装后面会单独写一篇文章!

神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。