前言:经过一天半的折腾,终于把 mysql 5.7.25 版本安装上了 Amazon Linux AMI release 2017.09 系统上,把能参考的博客几乎都看了一遍,终于发现这些细节问题,然而翻了无数的文章,基本上都没有提到这些,所以小生尽量把这些细节写下来,一方面是供初学者们参考,另一方面也是对自己花这么长时间的摸索的一个总结,如有不足之处欢迎各路高手指正。

一、安装前的检查

  1. 检查 linux 系统版本

        [root@localhost ~]# cat /etc/system-release

  2. 检查是否安装了 mysql (mysql 有三种安装方式:二进制包安装、RPM包安装、源码装)

      3. 系统内存检查

        检查一下 linux 系统的虚拟内存大小,如果内存不足 1G,启动 mysql 的时候可能会产生下面这个错误提示:  

      Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code.

      See "systemctl status mysqld.service" and "journalctl -xe" for details.[FAILED]

二、卸载MySQL数据库(RPM安装方式)

      1. 查看是否安装了MySQL组件

           [root@localhost ~]# rpm -qa | grep mysql

           若存在 mysql 安装文件,则会显示 mysql安装的版本信息

     如:mysql-connector-odbc-5.2.5-6.el7.x86_64

      2. 卸载前先关闭MySQL服务

                [root@localhost ~]# service mysql status

                [root@localhost ~]# service mysql stop

  3. 卸载已安装的MySQL,卸载mysql命令,如下:

      [root@localhost ~]# rpm -e --nodeps mysql-connector-odbc-5.2.5-6.el7.x86_64

  4. 将/var/lib/mysql文件夹下的所有文件都删除干净。

1
2
3
4
5
6
7
8
9
10
细节注意:
  检查一下系统是否存在 mariadb 数据库,如果有,一定要卸载掉,否则可能与 mysql 产生冲突。
  系统安装模式的是最小安装,所以没有这个数据库。
  检查是否安装了 mariadb:[root@localhost ~]# rpm -qa | grep mariadb
  如果有就使劲卸载干净:
       systemctl stop mariadb
       rpm -qa | grep mariadb
       rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64
       rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64
       rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

  

三、卸载MySQL数据库(二进制/源码安装方式)

1. 检查mysql服务并关闭服务进程

       (1)登录Linux后执行service mysqld status 或者service mysql status命令查看MySQL服务状态,根据开机初始化目录下mysql脚本的文件名而定,我这里是mysqld

Linux 系统下安装 mysql5.7.25(glibc版)

       (2)如果正在运行则执行service mysqld stop或者service mysql stop命令停止MySQL服务,根据开机初始化目录下mysql脚本的文件名而定,我这里是mysqld

Linux 系统下安装 mysql5.7.25(glibc版)

2. 查找mysql的安装目录并彻底删除

        (1)执行 find / -name mysql 查找跟mysql相关的目录

Linux 系统下安装 mysql5.7.25(glibc版)

        (2)执行 rm -rf ‘目录'删除查找出来的目录

Linux 系统下安装 mysql5.7.25(glibc版)

3. 删除mysql配置文件

       (1)执行 rm -rf /etc/my.cnf命令删除/etc/my.cnf文件

Linux 系统下安装 mysql5.7.25(glibc版)

       (2)执行 rm -rf /etc/init.d/mysqld命令删除/etc/init.d/下跟mysql有关的全部文件,一般包括mysql文件或mysqld文件,如果存在mysql文件则执行 rm -rf/etc/init.d/mysql命令

Linux 系统下安装 mysql5.7.25(glibc版)

4. 删除mysql用户及用户组

       (1)执行id mysql命令查看MySQL用户及用户组

Linux 系统下安装 mysql5.7.25(glibc版)

       (2)执行userdel mysql命令删除MySQL用户及用户组

Linux 系统下安装 mysql5.7.25(glibc版)

到此mysql卸载完成!

 

四、从 mysql 官网下载并上传 mysql安装包

  1. 下载 mysql 安装包

Linux 系统下安装 mysql5.7.25(glibc版)

     

  2. 上传安装文件到 linux 系统

五、将MySQL安装到/usr/local/mysql下

  1. 解压安装包,并移动至/usr/local目录下

    解压 mysql 的 gz 安装包:  [root@localhost ~]#  tar -zvxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

    /usr/local 目录下创建文件夹存 mysql:[root@localhost ~]# mkdir /usr/local/msyql

    将文件移动到 /usr/local 目录下,并重命名文件夹:[root@localhost ~]# mv mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz/*  /usr/lcoal/mysql

            新建data目录:[root@localhost ~]# mkdir /usr/local/mysql/data

  2. 添加系统用户

    添加 mysql 组和 mysql 用户:

      添加 mysql 组:[root@localhost ~]# groupadd mysql

      添加 mysql 用户:[root@localhost ~]# useradd mysql -g mysql

                  将/usr/local/mysql的素有者及所属组改为mysql:[root@localhost ~]# chown -R msyql.mysql /usr/local/mysql                                            

      扩展:

        查看是否存在 mysql 组:[root@localhost ~]# more /etc/roup | grep mysql

        查看 msyql 属于哪个组:[root@localhost ~]# groups mysql

        查看当前活跃的用户列表:[root@localhost ~]# w

  3. 检查是否安装了 libaio

    [root@localhost pub]# rpm -qa | grep libaio

    若没有则安装

      版本检查:[root@localhost pub]# yum search libaio

      安装:[root@localhost pub]# yum -y install libaio

  4. 安装 mysql

    进入安装 mysql 软件目录:[root@localhost ~]# cd /usr/local/mysql/

      5. 初始化 mysqld

                 [root@localhost mysql]# /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --initialize

    Linux 系统下安装 mysql5.7.25(glibc版)

    

 六、配置 mysql       

         1. 配置文件:

      [root@localhost mysql]# vim /etc/my.cnf   

[mysqld]
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server=utf8
# 取消密码验证
skip-grant-tables
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# skip-grant-tables
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

         2. 设置开机启动 

     a. 复制启动脚本到资源目录:[root@localhost mysql]# cp ./support-files/mysql.server /etc/init.d/mysql

     b. 增加 mysqld 服务控制脚本执行权限:[root@localhost mysql]# chmod +x /etc/init.d/mysql

     c. 将 mysqld 服务加入到系统服务:[root@localhost mysql]# chkconfig mysql on

     d. 检查mysqld服务是否已经生效:[root@localhost mysql]# chkconfig --list mysql

      命令输出类似下面的结果:

        mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off 

      表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用 service 命令控制 mysql 的启动和停止。

      查看启动项:chkconfig --list | grep -i mysql

      删除启动项:chkconfig --del mysql

    e. 启动 mysqld:[root@localhost mysql]# service mysql start

         3. 设置密码

             登录(由于/etc/my.cnf中设置了取消密码验证,所以此处密码任意)

             [root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p

               >>use mysql 

         >>update user set authentication_string=password('你的密码') where user='root';

         >>flush privileges;

         >>exit;

           4. 将/etc/my.cnf中的skip-grant-tables删除,登录再次设置密码(不知道为啥如果不再次设置密码就操作不了数据库了)               

       /usr/local/mysql/bin/mysql -u root -p
       >>ALTER USER 'root'@'localhost' IDENTIFIED BY '修改后的密码';
       >>exit;
 
/user/local/mysql/bin/mysql -uroot -p
>>user mysql
>> update user set host='%' where user = 'root';
>> flush privileges;
>> exit;
     6.环境变量配置

     将mysql的bin目录加入PATH环境变量,编辑 /etc/bashrc文件:[root@localhost mysql]# vim /etc/bashrc

1
2
MYSQL_HOME=/usr/local/mysql/bin
export PATH=$PATH:${MYSQL_HOME}

    执行命令使其生效:[root@localhost mysql]# source /etc/bashrc

    用 export 命令查看PATH值:[root@localhost mysql]# echo $PATH

七、登录 mysql

  1. 测试登录

    登录 mysql:[root@localhost mysql]# mysql -uroot -p(登录密码为初始化的时候显示的临时密码)

    初次登录需要设置密码才能进行后续的数据库操作:SET PASSWORD = PASSWORD('123456');(密码设置为了123456) 

    修改密码为 password:update user set authentication_string=PASSWORD('password') where User='root';

  2. 防火墙端口的设置,便于远程访问

    [root@localhost ~]$ firewall-cmd --zone=public --add-port=3306/tcp --permanent

    [root@localhost ~]$ firewall-cmd --reload

  开启防火墙mysql3306端口的外部访问

  CentOS升级到7之后,使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口

  --zone : 作用域,网络区域定义了网络连接的可信等级。

    这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接

  --add-port : 添加端口与通信协议,格式为:端口/通讯协议,协议是tcp 或 udp

  --permanent : 永久生效,没有此参数系统重启后端口访问失效

  5.3 使用 SQLyog 远程连接出现不允许连接问题:

    首先使用 dos 窗口 ping 一下 linux,排除网络连通问题,其次使用 SQLyog 连接测试一下。

    解决方法:登录 linux mysql 在用户管理表新增用户帐号

      mysql> use msyql 

      mysql> create user 'user-name'@'ip-address' identified by 'password';(红色标记为需要修改的地方)

    其他方案:

      授权root用户可以进行远程连接,注意替换以下代码中的“password”为 root 用户真正的密码,

      另外请注意如果你的root用户设置的是弱口令,那么非常不建议你这么干!:   

1
2
mysql> grant all privileges on *.* to root@"%" identified by "password" with grant option;
mysql> flush privileges;

相关文章: