centos8安装MySQL8

CentOS 7 安装与配置MySQL 8.0:从零开始详解
本文详细指导了在CentOS 7上通过命令行安装MySQL 8.0,包括依赖项安装、用户权限设置、源码包下载、解压、配置my.cnf、数据目录管理、环境变量设置、开机自启及安全性调整。遇到的问题和解决方案也一并列出。

依赖安装

sudo yum -y install libaio
sudo yum -y install ncurses-compat-libs
sudo ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5

用户准备

sudo groupadd mysql # 创建MySQL组
sudo useradd -r -g mysql -s /bin/false mysql # 添加mysql用户
sudo usermod -G mysql xxxx #把当前登录用户加入mysql组

下载

官网下载地址
在这里插入图片描述

解压

tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
sudo mv mysql-8.0.22-linux-glibc2.12-x86_64/ mysql-8.0.22

创建mysql-files

sudo mkdir /usr/local/software/oracle/mysql-8.0.22/mysql-files
sudo chown mysql:mysql /usr/local/software/oracle/mysql-8.0.22/mysql-files
sudo chmod 750 /usr/local/software/oracle/mysql-8.0.22/mysql-files

创建data

sudo mkdir /usr/local/software/oracle/mysql-8.0.22/data
sudo chown mysql:mysql /usr/local/software/oracle/mysql-8.0.22/data/
sudo chmod 777 /usr/local/software/oracle/mysql-8.0.22/data

创建my.cnf

sudo touch /usr/local/software/oracle/mysql-8.0.22/my.cnf
sudo chown root:root /usr/local/software/oracle/mysql-8.0.22/my.cnf
sudo chmod 644 /usr/local/software/oracle/mysql-8.0.22/my.cnf

my.cnf内容如下

[mysqld]
# 设置3306端口
port=3306
  
# 设置mysql的安装目录
basedir=/usr/local/software/oracle/mysql-8.0.22
  
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/software/oracle/mysql-8.0.22/data 
  
# soket文件,本地连接时使用
socket=/usr/local/software/oracle/mysql-8.0.22/data/mysql.sock

# 错误日志
log-error=/usr/local/software/oracle/mysql-8.0.22/data/mysqld_error.log
 
# pid文件
pid-file=/usr/local/software/oracle/mysql-8.0.22/data/mysqld.pid
 
# 创建导入导出操作安全目录
secure_file_priv=/usr/local/software/oracle/mysql-8.0.22/mysql-files
 
# 允许最大连接数
max_connections=200
  
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
  
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
  
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
  
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
default-time-zone='+08:00' 
# 慢查询配置
slow_query_log=ON
slow_query_log_file =/usr/local/software/oracle/mysql-8.0.22/data/slow.log
# 单位时秒
long_query_time=2   

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
  
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

data目录中建立错误日志

touch /usr/local/software/oracle/mysql-8.0.22/data/mysqld_error.log
chown -R mysql /usr/local/software/oracle/mysql-8.0.22/data/mysqld_error.log
chgrp -R mysql /usr/local/software/oracle/mysql-8.0.22/data/mysqld_error.log

修改mysql.server

sudo vim /usr/local/software/oracle/mysql-8.0.22/support-files/mysql.server

# basedir=
basedir=/usr/local/software/oracle/mysql-8.0.22/
# datadir=
datadir=/usr/local/software/oracle/mysql-8.0.22/data

初始化mysql

sudo /usr/local/software/oracle/mysql-8.0.22/bin/mysqld --defaults-file=/usr/local/software/oracle/mysql-8.0.22/my.cnf --initialize --console

初始化完成后会给你一个root的默认密码一定要记住,等会登陆要用他。

在这里插入图片描述

配置环境变量、以及开机自启

环境变量

执行:vim /etc/profile,追加如下内容

export PATH=$PATH:/usr/local/software/oracle/mysql-8.0.22/bin

执行:source /etc/profile

开机自启

cp /usr/local/software/oracle/mysql-8.0.22/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

启动mysql

systemctl start  mysqld.service

然后就可以使用mysql -u root -p 登陆了,这里要用到初始化时给你的密码了

重置用户的密码

alter user 'root'@'localhost'IDENTIFIED BY 'root';

允许外部访问

如果你是配置线上环境,建议不要直接开放root账号的允许外部访问,你可以新建立一个用户然后再开放,我这里是因为我配置的是本地所以无所谓。

use mysql;
update user set host='%' where user ='root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
FLUSH PRIVILEGES;

mysql8.0 引入了新特性 caching_sha2_password

mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式Navicat 12以下客户端不支持;

Navicat 12以下客户端支持的是mysql_native_password 这种加密方式;

解决方案:新建立一个用户,并指定加密方式为mysql_native_password,同样不建议直接修改root的加密方式。

1.创建用户
create user 'native'@'%' identified by '‘native';
2.赋值权限
grant all privileges on *.* to 'native'@'%' with grant option;
3.修改该用户的密码策略
ALTER USER 'native'@'%' IDENTIFIED WITH mysql_native_password BY 'native';
4.刷新
FLUSH PRIVILEGES;

错误

每个错误报错信息可能一样,但是产生的原因会偶尔会不一致,这里是我自己配置的时候遇到的问题以及解决方法。

1.启动报错

[root@centos701 mysql]# mysql -u root -p 
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

解决: ln -s /usr/local/software/oracle/mysql-8.0.22/data/mysql.sock /tmp/mysql.sock

2.mysql启动失败,报没有pid错误

解决:首先确认你mysql服务是否启动了,如果启动了还有问题,修改 /usr/local/software/oracle/mysql-8.0.22/data的权限:sudo chmod 775 /usr/local/software/oracle/mysql-8.0.22/data

3.报错’/usr/local/software/oracle/mysql-8.0.22my.cnf’ is ignored

'/usr/local/software/oracle/mysql-8.0.22my.cnf' is ignored

解决:sudo chmod 644 /usr/local/software/oracle/mysql-8.0.22/my.cnf

CentOS 8安装 MySQL 8 数据库,可以按照以下步骤进行操作: ### 下载并安装 MySQL Yum Repository 首先,需要下载 MySQL 官方提供的 Yum Repository 包。可以通过 `wget` 命令来下载: ```bash wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm ``` 接着,使用 `dnf` 命令来安装下载的 repository 包: ```bash sudo dnf install mysql80-community-release-el7-1.noarch.rpm ``` ### 安装 MySQL 服务器 一旦 repository 被正确安装,就可以使用 `dnf` 来安装 MySQL 服务器了: ```bash sudo dnf install mysql-community-server ``` ### 启动 MySQL 服务 安装完成后,启动 MySQL 服务,并设置开机自动启动: ```bash sudo systemctl start mysqld sudo systemctl enable mysqld ``` ### 获取临时密码 MySQL 8 在首次安装后会生成一个临时密码,这个密码可以在日志文件中找到: ```bash sudo grep 'temporary password' /var/log/mysqld.log ``` ### 登录 MySQL 并更改密码 使用临时密码登录 MySQL 后,需要立即更改 root 用户的密码。由于 MySQL 8 的密码策略较为严格,如果希望设置简单的密码,可以先调整密码策略[^3]: ```sql SET GLOBAL validate_password.length = 0; SET GLOBAL validate_password.policy = 0; ``` 然后修改 root 用户的密码,并刷新权限[^4]: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password' PASSWORD EXPIRE NEVER; FLUSH PRIVILEGES; ``` ### 配置防火墙 为了允许外部访问 MySQL 服务,可能还需要配置防火墙规则: ```bash sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload ``` ### 卸载旧版本(如有) 如果之前尝试过安装 MySQL 但遇到问题,建议彻底卸载旧版本[^2]: ```bash sudo dnf remove mysql-community-server sudo rm -rf /var/lib/mysql sudo rm -rf /etc/my.cnf ``` 完成以上步骤之后,MySQL 8 应该已经在你的 CentOS 8 系统上成功安装并运行了。记得根据实际需求进一步配置 MySQL 服务器。 ```bash # 检查MySQL服务状态 sudo systemctl status mysqld ``` 确保服务处于 active (running) 状态。如果有任何错误或警告信息,请检查日志文件 `/var/log/mysqld.log` 中的具体内容以进行故障排查。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值