CentOS 7 安装MySQL 8
1.下载
打开 [MySQL 官方下载地址](https://downloads.mysql.com/archives/community/)
选择我们要安装的版本 32位系统选择第一个(蓝色框内) 64位系统选择第二个(绿色框内)
2.卸载 CentOS 7 自带的 mariadb
mariadb 是 MySQL 的一个分支,此数据库会和我们安装的 MySQL 冲突。
查看 mariadb 安装的 rpm package
rpm -qa | grep mariadb
卸载
rpm -e mariadb-libs-5.5.37-1.el7_0.x86_64
如果报错 需要进行强制删除
rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
3.解压
将我们下载的 MySQL 放到 /usr/
目录下进行解压
xz -d mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar
将解压的文件 放到 /local/
下 并命名为 mysql
mv mysql-8.0.13-linux-glibc2.12-x86_64 /usr/local/mysql
了解内容
创建 tar.xz 文件命令:
tar cvf xxx.tar xxx/ 得到 xxx.tar文件,然后 xz -z xxx.tar 将 xxx.tar 压缩成为 xxx.tar.xz
解压 tar.xz 文件命令:
xz -d xxx.tar.xz 将 xxx.tar.xz 解压成 xxx.tar 然后,再用 tar xvf xxx.tar 解压。
4.增加 MySQL 用户和组
创建用户组
groupadd mysql
创建用户名和密码
useradd -g mysql mysql
passwd mysql
5.添加配置文件
由于 MySQL 8 是不自带配置文件的 所以我们要自己创建一个 my.cnf 配置文件
vim /etc/my.cnf
将以下内容粘贴到 my.cnf 中
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8
###############################基础设置#####################################
[mysqld]
#可以免密码登录
#skip-grant-tables
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1
#服务端口号 默认3306
port = 3306
default_storage_engine=InnoDB
skip-name-resolve
#mysql安装根目录
basedir = /usr/local/mysql
#mysql数据文件所在位置,
datadir =/usr/local/mysql/data
#临时目录 比如load data infile会用到
tmpdir = /tmp
#设置socke文件所在目录
socket = /tmp/mysql.sock
#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
transaction_isolation = READ-COMMITTED
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
#init_connect=‘SET NAMES utf8mb4‘
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
############################日志设置##########################################
#数据库错误日志文件
log_error = error.log
6.初始化 MySQL
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
建议复制粘贴执行命令
如果此处出错
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
执行以下命令
yum install -y libaio
7.启动 MySQL
需要在 /usr/local/mysql
目录下执行
./support-files/mysql.server start
此处可能会报错
原因可能是你的配置文件 socket = /tmp/mysql.sock
指定的目录不存在 你的 mysql 用户没有对应的权限
例如:
你的配置文件路径为 socket = /tmp/mysql/mysql.sock
需要先创建对应目录(已有则不需要创建) mkdir /tem/mysql/
为 mysql 用户进行授权 chown -R mysql:mysql /tmp/mysql
8.设置 root 密码
将配置文件中下面的注释打开
#可以免密码登录
skip-grant-tables
重启 MySQL 服务
service mysqld restart
进入 MySQL bin 目录
cd /usr/local/mysql/bin/
登录 MySQL
./mysql -uroot -p
直接按回车登录 然后选择数据库(注意 以下命令是在 MySQL 下执行的)
use mysql
修改密码
ALTER USER 'root' IDENTIFIED BY '你的密码';
为了远程功能也能正常连接 还需要做如下操作
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY '你的密码';
9.允许远程访问
允许远程连接执行以下命令
update user set host = '%' where user = 'root'
使标题8 和标题9 修改立即生效需要执行
flush privileges;
开放 3306 端口 (以下命令是 Linux 命令)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙
firewall-cmd --reload
10.添加 MySQL 服务 和 全局环境变量
添加服务执行以下命令
cp -a ./support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
查看服务是否添加成功
chkconfig --list mysqld
添加全局环境变量执行以下命令
vim /etc/profile
在文件最后添加如下参数
MYSQL_HOME=/usr/local/mysql
PATH=$MYSQL_HOME/bin:$PATH
export MYSQL_HOME PATH
重启 Linux
reboot