CentOS8.0下安装MySQL5.7.32

一、MySQL简介

针对不同的用户,MySQL 分为两个版本:

  • MySQL Community Server(社区版):该版本完全免费,但是官方不提供技术支持。
  • MySQL Enterprise Server(企业版):该版本能够以很高的性价比为企业提供数据仓库应用,支持 ACID 事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能,但是该版本需要付费使用,官方提供电话技术支持。

二、MySQL的安装

Linux下MySQL安装有三种方法,分别是:

  • 使用二进制包进行安装;
  • 使用rpm包进行安装
  • 源码编译安装。

1、下载mysql二进制安装包

下面我将分别使用二进制包与rpm安装包进行安装,操作系统是CentOS 8.0 64bit,接下来下载MySQL,下载地址:https://downloads.mysql.com/archives/community/,我们选择其中的一个版本下载:

 

下载完成之后。

2、上传、解压mysql压缩包

上传到CentOS8.0的的/usr/local文件夹下,然后使用tar命令解压该文件,

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

解压后如下图:

重命名该文件夹为mysql

mv /usr/local/mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql

如下图:

3、创建mysql数据目录

进入到mysql目录,由于mysql的5.7版本没有data目录,所以我们使用mkdir创建一个

mkdir data

如下图:

4、创建mysql用户组和用户

groupadd mysql //创建mysql用户组

useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql/ //创建一个不能登录的mysql用户,同时添加到mysql组,登录系统是的初始目录是/usr/local/mysql/ 。

-s<shell>   指定用户登入后所使用的shell。

-g<群组>  指定用户所属的群组

-r  建立系统帐号。

-d<登入目录>  指定用户登入时的起始目录。

命令解释见:https://www.runoob.com/linux/linux-comm-useradd.html

如下图:

5、改变mysql目录权限,之前是root权限,现在设置成mysql权限

chown -R mysql:mysql /usr/local/mysql/ 将/usr/local/mysql/目录及下属子目录的拥有者设为 mysql,群体的使用者 mysql,如下图:

6、初始化数据库

进入mysql文件夹的bin文件夹,初始化数据库

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

7、把mysql放到本地系统服务中

cp -a ../support-files/mysql.server /etc/init.d/mysqld

8、设置mysql的配置文件

由于mysql内没有my-default.cnf 文件,直接编辑的 /etc/my.cnf文件,使用命令 vi /etc/my.cnf

[mysqld]

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

socket=/tmp/mysql.sock

user=mysql

port=3306

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

symbolic-links=0

max_connections=200

default-storage-engine=INNODB

lower_case_table_names=1

max_allowed_packet=32M

explicit_defaults_for_timestamp=true

[mysqld_safe]

log-error=/var/log/mysql/mysql.log

pid-file=/var/run/mysql/mysql.pid

注意:mysql连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock,这个socket路径不要修改,不然连本地mysql的时候回报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'

因为my.cnf中配置了log-error、pid-file路径,因此需要在/var/log/、/var/run/创建mysql目录,并且给mysql用户全部的权限(chmod)

chmod -R 777 /var/log/mysql/

chmod -R 777 /var/run/mysql/

否则启动会报错,如下图:

 

9、启动mysql服务

service mysqld start

10、登陆mysql

cat /root/.mysql_secret 查看root账号的密码

注:使用cat /root/.mysql_secret查看的密码,尝试了多次依旧登录不上,不得已改变了其他办法登录,大家有通过这种方式登录的可以在下面留意,欢迎交流学习。

编辑/etc/my.cnf,在[mysql]下添加一行

skip-grant-tables

使其登录时跳过权限检查,登录成功以后,如下图:

 

11、修改登录密码

登录成功以后,修改密码,命令:SET PASSWORD FOR 'root'@localhost=PASSWORD('123456');

报错误:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

先执行命令:flush privileges;

在修改密码,如下图:

修改/etc/my.cnf,注释掉skip-grant-tables,重新启动mysql

12、设置mysql开机自启动环境变量

配置mysql环境变量,修改/etc/profile文件,在最下方添加配置

vi /etc/profile

增加如下配置:

export PATH=$PATH:/usr/local/mysql/bin

立即生效

source /etc/profile

13、设置mysql开机自启动

chmod +x /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig --list

 

如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入

chkconfig --level 345 mysqld on

然后重启电脑

reboot

查看mysql运行状态

service mysqld status

14、设置mysql允许远程登录

mysql -u root -p

use mysql;

update user set host = '%' where user = 'root';

FLUSH PRIVILEGES;

注:如果连接不上,注意是不是防火墙等3306端口没有开放。