整理一下mysql5.7的安装,安装基本与之前的mysql5.6保持一致,但是会有一些不同,来介绍一下!

整理一下安装mysql的步骤,大致如下:

  • 解压压缩包(二进制免编译压缩包)
  • 修改压缩包名字
  • 创建mysql用户和用户组(组也可以不创建)
  • 创建datadir目录
  • 初始化数据库
  • 修改启动脚本文件,5.7.22版本好像没有默认配置文件。
  • 启动mysql

安装过程如下:

#解压文件包tar zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz#修改文件包名字并移动位置mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql#创建mysql用户useradd -M mysql#创建数据库目录mkdir /data/mysql#修改mysql目录的用户主和用户组chown -R mysql:mysql /data/mysql#安装mysql[root@test3 mysql]# ./bin/mysql_install_db --user=mysql --datadir=/data/mysql2018-07-18 19:21:28 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize#报警告提示,使用如下方式初始化[root@test3 mysql]# ./bin/mysqld --initialize --user=mysql --datadir=/data/mysql./bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory#安装时报错,可以使用安装如下文件包yum -y install numactl.x86_64#初始化如下[root@test3 mysql]# ./bin/mysqld --initialize --user=mysql --datadir=/data/mysql2018-07-18T11:24:17.639719Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).2018-07-18T11:24:18.757337Z 0 [Warning] InnoDB: New log files created, LSN=457902018-07-18T11:24:18.939043Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.2018-07-18T11:24:19.007577Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 1c981b1a-8a7d-11e8-98d1-fa336351fc00.2018-07-18T11:24:19.009188Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.2018-07-18T11:24:19.010028Z 1 [Note] A temporary password is generated for root@localhost: ASB=D_(8zN?d#注意最后一行,有一个临时密码设置#拷贝启动脚本cp -p support-files/mysql.server /etc/init.d/mysqld#修改mysqld文件sed -i "s/^datadir=/datadir=\/data\/mysql/" /etc/init.d/mysqld#启动mysql[root@test3 mysql]# service mysqld startStarting MySQL.Logging to '/data/mysql/test3.err'. SUCCESS! #然后进入shell交互界面[root@test3 mysql]# mysql -uroot -pEnter password: Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 3Server version: 5.7.22Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>show databases;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.#mysql5.7要求必须更改密码,然后才可以正常使用。mysql> alter user "root"@"localhost" identified by "123qwE#!";Query OK, 0 rows affected (0.00 sec)#mysql已经可以正常使用mysql> show databases; +--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |+--------------------+4 rows in set (0.00 sec)mysql>

新给定的临时密码是有一定的期限的,若过长时间不修改密码,再登录,则会出现如下错误!

[root@test1 mysql]# mysql -uroot -pEnter password: ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.[root@test1 mysql]#

这时候可以使用mysqladmin修改密码,如下:

[root@test1 mysql]# ./bin/mysqladmin -uroot -p passwordEnter password: New password: Confirm new password: Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.[root@test1 mysql]#

在初始化的时候,若是不想mysql自己设置密码,可以使用参数--initialize-inscure来初始化。

mysqld --initialize-insecure --datadir=/data/mysql --user=mysql

需要注意一点的是,mysql5.7在安装时会自动在/etc/my.cnf下创建配置文件,因此不需要再拷贝,但是需要修改数据库文件中目录位置,配置文件如下:

[mysqld]datadir=/data/mysqlsocket=/data/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0[mysqld_safe]log-error=/data/mysql/test.logpid-file=/var/run/mysqld/mysqld.pid

mysql5.7默认配置文件

mysql5.7的安装脚本如下:

#!/bin/bash#mysql5.7安装脚本mysql_v=mysql-5.7.23-linux-glibc2.12-x86_64print_str() {    echo -e "\033[31;33;1m $1 \033[0m"}check_ok() {    if [ $? != 0 ]; then        echo "Some error happend, please check it"    fi       }print_str "判断mysql安装包是否存在"sleep 1cd /usr/local/srcmysql_file=${mysql_v}.tar.gzif [ -f ${mysql_file} ]; then    print_str "解压安装包"    tar -zxvf ${mysql_file}    check_ok    print_str "移动备份文件"    mv ${mysql_v} /usr/local/mysql    check_okelse   print_str "请下载数据库包文件" fi  sleep 2print_str "关闭selinux和iptables"#关闭防火墙iptables -Fservice iptables save#关闭selinuxselinux1=`getenforce`if [ $selinux1 != 0 ];then    setenforce 0    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config    check_okfisleep 2print_str "创建mysql用户"if ! grep -q "mysql" /etc/passwd; then    useradd -M mysql    check_okelse   print_str "mysql用户已经存在"fisleep 2print_str "创建数据库目录"if [ -d /data/mysql ]; then    #删除原来的目录,或者备份原来的目录,这里选择备份    mv /data/mysql /data/mysql.bak    mkdir -p /data/mysqlelse    mkdir -p /data/mysql fisleep 2print_str "更改目录权限"chown -R mysql:mysql /data/mysqlcheck_okprint_str "检查是否安装gcc编译器和依赖包"for pak in gcc numactl libaio libaio-devel pcre-devel zlib-develdo    if ! rpm -qa ${pak} >> /dev/null; then        print_str ${pak} has installed!!    else       yum install -y ${pak} >& /dev/null       sleep 1       check_ok    fidoneprint_str "初始化数据库"#mysql5.7的初始化命令之前版本的初始化命令不一样cd /usr/local/mysql./bin/mysqld --initialize --user=mysql --datadir=/data/mysql >& /tmp/mysql.txtcheck_oksleep 2pwd=`grep "temporary password" /tmp/mysql.txt  |awk '{print $NF}'`check_ok#mysql5.7初始化的时候会自动设置一个密码,这里我们提取出这个密码print_str "数据库的初始化密码为 ${pwd}"sleep 2print_str "设置启动脚本"cp -p support-files/mysql.server /etc/init.d/mysqldcheck_oksed -i "s/^datadir=/datadir=\/data\/mysql/" /etc/init.d/mysqldcheck_oksleep 2print_str "修改数据库配置文件"#mysql5.7会在/etc/下面创建my.cnf配置文件,因此不需要再拷贝,但是需要修改其文件目录#若是没有配置文件可以自己拷贝一个,if [ -f /etc/my.cnf ]; then    mv /etc/my.cnf  /etc/my.cnf.bakfi#默认配置文件有很少的配置,我们直接写入cat > /etc/my.cnf <<EOF[mysqld]datadir=/data/mysqlsocket=/data/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0[mysqld_safe]log-error=/data/mysql/test.logpid-file=/var/run/mysqld/mysqld.pidEOF#启动数据库,并且添加环境变量service mysqld startcheck_okecho PATH=$PATH:/usr/local/mysql/bin >> /etc/profile.d/mysql.shsource /etc/profilecheck_ok#删除中间文件rm -f /tmp/mysql.txtecho -e "\033[31;35;1m mysql5.7需要强制修改密码,请尽快修改密码\033[0m"

mysql5.7安装脚本

 

©著作权归作者所有:来自51CTO博客作者Jack_jason的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Ubuntu 上安装rust
  2. 睡前聊一聊"spring bean 生命周期"
  3. Spring 天天用,bean 懒加载原理你懂吗?
  4. FPM包定制完成 (等待实现 里程碑 1 和 2) 2018年4月13日 2:18:
  5. kubernetes-ingress 安装
  6. Ceph最新版Dashboard初探
  7. konicaminolta柯尼卡美能达打印机统驱动安装(统信UOS、麒麟系统)
  8. 04. SpringCloud实战项目-安装Docker
  9. 02. SpringCloud实战项目-快速搭建Linux环境-运维必备

随机推荐

  1. 8天快速掌握Android开发
  2. Android剖析和运行机制
  3. Android(安卓)Shell 常用命令
  4. 实现底部导航栏中间凸起
  5. Android最新框架
  6. 关于android:layout_x 与 android:layout
  7. Android中style的使用
  8. Android启动流程分析(二) init进程的启动
  9. android EditText 全面阐述
  10. Android HTTP实例 发送请求和接收响应