1.卸载已经安装的数据库

1.1 检查linux是否安装了mariadb数据库,新安装的centos系统会自带mariadb数据库,mariadb数据库是MySQL的分支,执行命令

yum list installed | grep mariadb

1.2 若linux中安装了mariadb数据库,先卸载掉,mariadb数据库可能与安装mysql发生冲突,执行命令

yum -y remove mariadb*.*

 1.3 删除之前安装的mysql,没有则跳过

# 检查是否安装MySQL
rpm -qa | grep mysql
# 如果已安装MySQL,则删除
rpm -e --nodeps +包名
# 搜索MySQL文件夹
find / -name mysql
# 如果有MySQL文件夹,则删除
rm -rf +包名

2.安装mysql数据库

2.1 查看服务器glibc版本
rpm -qa | grep glibc

 

2.2 下载mysql软件安装包

下载地址:HTTPS://DEV.MYSQL.COM/DOWNLOADS/MYSQL/

1.选择软件包

右键复制此处连接,使用wget在服务器上下载,或者点击此处连接下载,再上传到服务器上,此处我下载的是:mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz

2.3 解压软件包

tar -xvf mysql-8.0.38-linux-glibc2.17-x86_64.tar.xz -C /usr/local/

其中,-C /usr/local 是指定解压到哪个目录下去,如果不加这个参数,则解压到当前所在的目录,此时压缩格式的软件安装包完全解压。切换目录到解压后的目录再次执行命令:

mv mysql-8.0.38-linux-glibc2.17-x86_64 mysql-8.0.38

将文件夹重命名,建议保留版本号

2.4 创建mysql用户和用户组并修改权限
groupadd mysql 	#创建一个新的用户组,名为“mysql”
useradd -r -g mysql mysql 	#创建一个新的用户,也名为“mysql”
2.5 创建数据目录并赋予权限
cd /usr/local/mysql-8.0.38
mkdir data
chown mysql:mysql -R ./data
2.6 配置my.cnf文件
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql-8.0.38
datadir=/usr/local/mysql-8.0.38/data
socket=/tmp/mysql.sock
log-error=/usr/local/mysql-8.0.38/data/mysql.err
pid-file=/usr/local/mysql-8.0.38/data/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true

 

  • [mysqld]:这一行标识接下来的设置是针对MySQL服务器守护进程mysqld的。

  • bind-address=0.0.0.0:这告诉MySQL服务器监听所有网络接口上的连接请求。0.0.0.0表示接受从任何IP地址发来的连接,这在服务器需要从多个网络接入时很有用。

  • port=3306:设置MySQL服务器监听的端口号为3306,这是MySQL的默认端口。

  • user=mysql:这指定了运行MySQL服务器进程的系统用户。在这里,它设置为mysql,这是一个专门为MySQL服务创建的用户,用于提高安全性。

  • basedir=/usr/local/mysql-8.0.38:这定义了MySQL的基本安装目录,所有的二进制文件、库、支持文件等都在这个目录下。

  • datadir=/usr/local/mysql-8.0.38/data:这指定了数据库文件存放的目录,所有的表、索引、数据等都存储在这个位置。

  • socket=/tmp/mysql.sock:这指定了MySQL服务器用于本地通信的socket文件的路径。客户端和服务器在同一台机器上通信时会使用这个socket文件。

  • log-error=/usr/local/mysql-8.0.38/data/mysql.err:这指定了错误日志文件的位置。MySQL运行中的错误和警告会记录在这个文件中。

  • pid-file=/usr/local/mysql-8.0.38/data/mysql.pid:这指定了进程ID文件的路径。该文件包含运行中的MySQL服务器进程的进程ID。

  • character_set_server=utf8mb4:设置服务器的默认字符集为utf8mb4。这是一个完全支持Unicode的字符集,可以存储任何Unicode字符。

  • symbolic-links=0:这禁用了使用符号链接到表文件的功能。这是一个安全设置,防止通过符号链接访问系统上的非数据库文件。

  • explicit_defaults_for_timestamp=true:这改变了TIMESTAMP列的默认行为,使其更加符合标准的SQL。启用这个选项后,TIMESTAMP字段在没有明确默认值的情况下不会自动设置当前的时间戳。

2.7 初始化数据库

2.7.1 进入基本安装目录的bin目录下

cd /usr/local/mysql-8.0.38/bin

2.7.2 初始化

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql-8.0.38/ --datadir=/usr/local/mysql-8.0.38/data --user=mysql --initialize

2.7.3 将mysql.server复制到/etc/init.d下

cp /usr/local/mysql-8.0.38/support-files/mysql.server /etc/init.d/mysql

将 mysql.server 脚本放置到 /etc/init.d 目录中的主要作用是使得你可以使用标准的系统服务管理工具来管理 MySQL 服务。在 Linux 系统中,/etc/init.d/ 目录存放的是一系列系统服务的管理(启动、停止等)脚本。
mysql.server 是一个官方针对 Unix 和类 Unix 系统二进制版本安装包中包含的脚本,它主要用于启动、查看和停止 mysqld 进程服务。当 mysql.server 脚本被放置在 /etc/init.d/mysql 目录中后,你可以使用 service 命令来管理 MySQL 服务,例如:
service mysql start:启动 MySQL 服务。
service mysql stop:停止 MySQL 服务。
service mysql restart:重启 MySQL 服务。
这样,你就可以很方便地通过标准的系统服务管理工具来管理 MySQL 服务了。不过,在实际操作中,你还需要确保 MySQL 的配置文件(如 my.cnf)已经正确设置,并且 MySQL 的数据目录和其他相关目录的权限和所有权设置也是正确的。

2.7.4 启动mysql

#启动
service mysql start
#查询
ps -ef|grep mysql
 

2.7.5 设置mysql环境变量

# 编辑文件
vim /etc/profile
# 在最后添加
export PATH=$PATH:/usr/local/mysql-8.0.38/bin
# 属性配置
source /etc/profile

3.配置MySQL

3.1 查看密码
grep 'temporary password' /usr/local/mysql-8.0.38/data/mysql.err

3.2  登录mysql
mysql -u root -p

输入初始密码

3.3 设置密码
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '此处设置密码,越复杂越好';

# 修改完成刷新配置
flush privileges;
3.4 配置远程连接
use mysql;
update user set host='%' where user='root';
flush privileges;
3.5 服务器放开3306端口,或者关闭防火墙
# 管理防火墙
firewall-cmd --state                   # 查看防火墙状态
systemctl start firewalld              # 开启防火墙
systemctl stop firewalld.service       # 停止防火墙
systemctl disable firewalld.service    # 禁止防火墙开机启动
systemctl restart firewalld.service    # 重启防火墙 
setenforce 0                           # 临时关闭SELinux

# 永久关闭SELinux
vim /etc/selinux/config
SELINUX= enforcing

# 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 开放端口之后 需要重新启动防火墙
systemctl restart firewalld.service    # 重启防火墙 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐