MYSQL 8 安装–Linux centos7 系统
1. 前提:Linux系统上是否安装其他的数据库,若有先卸载
1.1 查看安装的包:
rpm -qa | grep mysql
1.1.1 检查MariaDB是否安装:
yum list installed | grep mariadb
1.2 卸载包:
rpm -e --nodeps mysql-*
1.2.1 卸载MariaDB:
yum -y remove mariadb*
1.3 查看mysql路径:
whereis mysql
1.4 查找MySQL文件所在目录:
find / -name mysql
1.5 依次删除:
rm -rf 文件
2. 下载
2.1 本地上传压缩包
2.1.1 通过官网下载,然后上传到服务器
官网地址:https://dev.mysql.com/downloads/mysql/
2.1.2 通过xftp上传到mysql的预安装的目录
2.2 在预安装目录下执行 wget 命令下载 MySQL8 压缩包
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
3. 解压安装
3.1 解压指定路径
tar -xzvf 包.tar -C 指定的解压路径
3.2 安装,配置环境变量
编辑 vi /etc/profile
配置环境变量
3.2.1 添加变量
export PATH=$PATH:/mysql8安装路径/bin
3.2.2 更新profile文件:
source /etc/profile
4. 编辑my.cnf
4.1 在/etc/目录下新建 my.cnf 配置文件,写入以下内容:
Tips:mysql8+版本,Linux默认区分大小写;
所以在数据库初始化之前必须先在配置文件写入 “不区分大小写”lower_case_table_names = 1
vi /etc/my.cnf
[client]
port=3306
socket=/tmp/mysql/mysql.sock
[mysqld]
port=3306
user=mysql
socket=/tmp/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-error=error.log
transaction_isolation = READ-COMMITTED
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
lower_case_table_names = 1
default_authentication_plugin=mysql_native_password
skip-grant-tables
4.2 my.cnf 3处需要修改的位置
4.2.1 socket 的路径
根据实际创建的 socket 路径进行修改
4.2.2 basedir的路径
根据实际安装 MySQL8 的安装路径进行修改
4.2.3 datadir的路径
根据实际创建的 data 路径进行修改
5. 创建用户和用户组
5.1 创建用户组:
groupadd mysql
5.2 创建用户:
useradd -r -g mysql mysql
6. 更改目录权限
chown -R mysql:mysql /usr/local/mysql8
chown -R mysql:mysql /tmp/mysql
chmod -R 777 /usr/local/mysql8/data/
chmod -R 755 /tmp/mysql/ /usr/local/mysql8/
7. 初始化数据库
7.1 在bin目录下,执行:
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
7.2 记住初始化密码
这里因为设置了 skip-grant-tables ,无密码登录
7.3 在 bin/ 目录下启动,执行命令
/usr/local/mysql9/support-files/mysql.server start
7.4 查看启动状态
systemctl status mysqld.service
8. MySQL设置连接
8.1 登录数据库
mysql -uroot -p
8.2 修改密码,允许远程
进入mysql库
use mysql;
清空密码
update user set authentication_string='' where user='root';
flush privileges;
修改密码
alter user 'root'@'localhost' identified by 'root';
允许远程
update user set host='%' where USER='root';
flush privileges;
alter user 'root'@'%' identified with mysql_native_password by 'root';
flush privileges;
保存退出后,重新编辑my.cnf文件,注释掉 #skip-grant-tables ,然后重启数据库
9. 启动MySQL
9.1 端口加入防火墙
9.1.1 加入端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
9.1.2 重启:
firewall-cmd --reload
9.1.3 查看所有的防火墙规则:
iptables -nL
9.1.4 查看开放的端口:
firewall-cmd --zone=public --list-ports
9.2 启动数据库
9.2.1 设置自动启动
cd support-files/
cp mysql.server /etc/init.d/mysql
chmod 755 /etc/init.d/mysql
cd /etc/init.d
chkconfig --add mysql
chkconfig --level 345 mysql on
mysql restart
10. 启动报错情况
10.1 The server quit without updating PID file
Chrome上有很多的解决方法:分别是:
①:权限问题,mysq.cnf和所定义的mysql数据库存放目录的权限,要保证是mysql用户的权限
②:进程中有mysql的进程,上次的退出并没有自动结束该pid,导致新的进程无法启动
③:进入mysql数据库的存放目录,如果有index后缀的都删除也可以。
④:my.cnf 这个配置文件内容不对,检查是否定义了数据库存放目录,如果没有定义,请立刻定义。
⑤:错误日志目录不存在解决方法:使用“chown” “chmod”命令赋予mysql目录所有者及权限。
当然,还有一种情况:10.2
10.2 在没有停数据库服务的情况下,数据库服务器被宕机
机器重启后,试图重启MySQL服务,一直报错 10.1 的错,试过以上几种方法都不行,于是查看了详细错误日志,显示:
Assertion failure: fut0lst.ic:86:addr.page == FIL_NULL || addr.boffset >= FI……
①:设置成恢复模式,在 /etc/my.cnf中添加如下配置
innodb_force_recovery = 1
如果1不能启动成功,再逐步增加为2/3/4等。直到能启动mysql!