CentOS7安装MySQL8.0教程

环境介绍

操作系统:Centos7.6

MySQL版本: 8.0.27

只要是8.0.*版本,那就可以按照本文说明安装

一、安装前准备

1、卸载MariaDB

安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB。

1.1、查看是否安装mariadb
bash 复制代码
rpm -qa|grep mariadb
1.2、卸载
bash 复制代码
rpm -e --nodeps 文件名
1.3、检查是否卸载干净
bash 复制代码
rpm -qa|grep mariadb
2.检查依赖
2.1、查看是否安装libaio
bash 复制代码
rpm -qa|grep libaio

如果没有安装则执行

bash 复制代码
yum -y install libaio //安装libaio 
2.2、查看是否安装numactl
bash 复制代码
rpm -qa|grep numactl

如果没有安装则执行

bash 复制代码
yum -y install numactl //安装numactl 

二、下载并安装MySQL

1、下载资源包

阿里云下载地址:https://mirrors.aliyun.com/mysql/MySQL-8.0/?spm=a2c6h.25603864.0.0.5f4c712bmNnZeW

官网下载地址:https://dev.mysql.com/downloads/mysql/

2、解压

本文安装包上传到了 /usr/local/ 目录下

进入安装包目录

bash 复制代码
cd /usr/local/

解压

bash 复制代码
tar -zxvf mysql-8.0.27-el7-x86_64.tar.gz
3、重命名

将解压后的文件夹重命名为mysql

bash 复制代码
mv mysql-8.0.27-el7-x86_64/ mysql
4、创建存储数据文件

在重命名后的mysql文件夹中创建data文件夹

bash 复制代码
mkdir mysql/data
5、设置用户组并赋权

先进入mysql文件夹

bash 复制代码
cd /usr/local/mysql

创建用户组

bash 复制代码
groupadd mysql

创建用户

-r:创建系统用户

-g:指定用户组

bash 复制代码
useradd -r -g mysql mysql

更改属主和数组

bash 复制代码
chown -R mysql:mysql ./

更改权限

bash 复制代码
chmod -R 755 ./
6、初始化MySQL

进入MySQL的bin目录

bash 复制代码
cd /usr/local/mysql/bin/

初始化

bash 复制代码
./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

初始化完成后会打印一个随机密码,后面会用到。

7、配置参数文件
bash 复制代码
vi /etc/my.cnf

配置文件修改为以下内容,也可以根据自己需要设置参数。

bash 复制代码
[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
default-character-set = utf8mb4

[mysql]  
default-character-set = utf8mb4

[mysqld]  
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'

port = 3306
socket = /usr/local/mysql/data/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
datadir = /usr/local/mysql/data
#lower_case_table_names=1
#如果要设置lower_case_table_names可以在初始化里面设置 ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --lower_case_table_names=1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

配置后修改 /etc/my.cnf 的权限为777

bash 复制代码
chmod 777 /etc/my.cnf
8.启动MySQL
bash 复制代码
/usr/local/mysql/support-files/mysql.server start
9.设置软连接,并重启MySQL
bash 复制代码
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/mysql.sock /var/mysql.sock
service mysql restart
10、登录并更改密码
bash 复制代码
[root@localhost bin]# mysql -uroot -p
Enter password: 输入初始化随机密码

两种改密方式二选一

bash 复制代码
alter user 'root'@'localhost' identified by '123456';
set password for root@localhost = '123456';
11.开放远程连接
bash 复制代码
mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;    //刷新权限
12、连接工具测试连接MySQL

如果服务器本地可以连接,但是连接工具远程连接不进去,则需要检查一下防火墙是否放行3306端口,也可以暂时先关闭防火墙后重试。

13、关闭防火墙
bash 复制代码
systemctl stop firewalld

防火墙相关设置

bash 复制代码
# 查看当前防火墙状态
sudo systemctl status firewalld

# 如果防火墙当前是关闭状态(inactive),则开启防火墙
sudo systemctl start firewalld

# 若要让防火墙在系统重启后仍然保持开启状态(永久开启)
sudo systemctl enable firewalld

# 开放 81 端口并设置为永久生效
sudo firewall-cmd --permanent --add-port=3306/tcp

# 重新加载防火墙规则使之生效
sudo firewall-cmd --reload

# 查看开放了哪些端口
firewall-cmd --list-ports
14、MySQL启动和停止

CentOS6和CentOS7命令都可以使用。

启动

bash 复制代码
service mysql start
systemctl start mysql

停止

bash 复制代码
service mysql stop
systemctl stop mysql

重启

bash 复制代码
service mysql restart
systemctl restart mysql

查看状态

bash 复制代码
service mysql status
systemctl status mysql

三、设置开机自启动(可选)

将服务文件拷贝到 /etc/init.d下,并重命名为mysqld

bash 复制代码
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

赋予可执行权限

bash 复制代码
chmod +x /etc/init.d/mysqld

添加服务

bash 复制代码
chkconfig --add mysqld

显示服务列表

bash 复制代码
chkconfig --list

注:如果看到mysqld的服务,并且3,4,5都是on的话则成功,如果是off,则执行

bash 复制代码
chkconfig --level 345 mysqld on

重启系统

bash 复制代码
reboot

重启后查看mysql是否开机自启动

bash 复制代码
ps -ef|grep mysql
相关推荐
Elastic 中国社区官方博客6 小时前
搜索倍增器:推动收入、生产力和 AI 实现规模化
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
光电的一只菜鸡6 小时前
ubuntu之坑(二十)——VMware虚拟机系统无法正常进入如何处理
linux·运维·ubuntu
东风破_7 小时前
从输入 juejin.cn 到看到页面:DNS、Nginx、服务器集群与 CDN 到底在做什么?
后端·mysql
小成很成7 小时前
mysql 8.0.21 升级 mysql 8.0.45(经过生产环境验证)
android·mysql·adb
东风破_7 小时前
从 0 设计一个博客数据库:用户、头像与文章表应该怎么建?
后端·mysql
保定公民8 小时前
达梦数据库存储过程中的数组类型详解:基础数组与记录数组的差异化应用
数据库·达梦·存储过程·达梦数据库·dm8·dm
你住过的屋檐8 小时前
【Nginx】linux上安装nginx
linux·运维·nginx
梦Arrebol8 小时前
Redis 内容及相关实验
数据库·redis
宵时待雨8 小时前
linux笔记归纳17:传输层协议UDP
linux·笔记·udp
大模型码小白9 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring