1.卸载mariadb
在 Linux 系统中,如果已经安装了 MariaDB,并且想要安装 MySQL,需要先卸载 MariaDB 以避免冲突。
先列出MariaDB相关的包:
rpm -qa | grep mariadb
卸载列出的包:
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
rpm -e --nodeps 后跟包名的形式进行卸载
如果运行代码 rpm -qa | grep mariadb
后输出类似以下结果:
mariadb-libs-5.5.56-2.el7.x86_64
mariadb-server-5.5.56-2.el7.x86_64
mariadb-5.5.56-2.el7.x86_64
则需要卸载每个包:
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
rpm -e --nodeps mariadb-server-5.5.56-2.el7.x86_64
rpm -e --nodeps mariadb-5.5.56-2.el7.x86_64
检查是否卸载成功:
rpm -qa | grep mariadb
无任何返回值,则表示卸载成功
2.下载MySQL安装包
首先查看系统版本
rpm -qa | grep glibc
glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。
根据自己系统的版本在官网(MySQL :: Download MySQL Community Server)下载对应安装包
3.上传至Linux
在/usr/local/目录下创建安装目录(推荐安装在/usr/local/下)
mkdir /usr/local/mysql
cd /usr/local/mysql/
服务器有网的情况下也可以直接在刚才创建好的目录/usr/local/mysql/下使用这条命令直接下载(使用wget下载时,确保yum install -y wget 安装了wget) ,下载完成后随后解压就可以了。
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.40-linux-glibc2.17-x86_64.tar.xz
我用的CRT进行上传的,上传至刚才创建好的文件夹即可。
ls 一下就可以看见上传的文件
4.解压MySQL安装包
tar -xvf mysql-8.0.40-linux-glibc2.17-x86_64.tar.xz
解压后改个简单的名字:
mv mysql-8.0.40-linux-glibc2.17-x86_64 mysql8
5.创建存储初始化数据目录
cd到mysql解压后的目录中:
cd /usr/local/mysql/mysql8
创建对应目录:
mkdir data
6.创建 MySQL 用户和用户组并设置目录权限
创建用户和用户组:
groupadd mysql
useradd -g mysql mysql
groupadd mysql
:创建一个名为 mysql
的用户组,以便于管理 MySQL 用户。
useradd -g mysql mysql
:创建一个名为 mysql
的用户,并将其添加到 mysql
用户组,以提高安全性。
设置目录权限:
chown -R mysql:mysql /usr/local/mysql/mysql8
chmod 750 /usr/local/mysql/mysql8/data
chown -R mysql:mysql /usr/local/mysql/mysql8
:递归地将 MySQL 安装目录的所有权更改为 mysql
用户和用户组。
chmod 750 /usr/local/mysql/mysql8/data
:设置数据目录的权限为 750,表示所有者有读、写、执行权限,组用户有读和执行权限,其他用户无权限。
查看权限:ls -l
7.创建配置文件
MySQL所需的配置文件放在/etc下叫my.cnf(原本没有,直接创建)
vim /etc/my.cnf
my.cnf中写入内容:
[mysqld]
bind-address=0.0.0.0 # 允许从任何 IP 地址连接
port=3306 # MySQL 默认端口
user=mysql # 运行 MySQL 的用户
basedir=/usr/local/mysql/mysql8 # MySQL 安装根目录
datadir=/usr/local/mysql/mysql8/data # 数据存储目录[mysqld_safe]
socket=/usr/local/mysql/mysql8/data/tmp/mysql.sock # socket 文件路径
log-error=/usr/local/mysql/mysql8/data/error/mysql.log # 错误日志路径
pid-file=/usr/local/mysql/mysql8/data/RR.pid # 进程 ID 文件路径character_set_server=utf8mb4 # 设置服务器字符集为 utf8mb4
symbolic-links=0 # 是否支持符号链接
explicit_defaults_for_timestamp=ON # 时间戳处理模式
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION # SQL 模式设置
lower_case_table_names=1 # 忽略表名大小写[client]
default-character-set=utf8mb4 # 客户端默认字符集
socket=/usr/local/mysql/mysql8/data/tmp/mysql.sock # 客户端 socket 文件路径
8.创建 MySQL 服务
将 MySQL 服务脚本复制到 /etc/init.d/
:
cp -a /usr/local/mysql/mysql8/support-files/mysql.server /etc/init.d/mysql
授权并添加服务:
给服务脚本执行权限
chmod +x /etc/init.d/mysql
将 MySQL 服务添加到系统管理工具中
chkconfig --add mysql
列出 MySQL 服务的状态
chkconfig --list mysql
- 0 - 关机状态
- 1 - 单用户模式(通常用于维护)
- 2 - 多用户模式(不含网络)
- 3 - 完整的多用户模式(含网络)
- 4 - 自定义(较少使用)
- 5 - 多用户模式加图形界面
- 6 - 重启
9.初始化MySQL
cd /usr/local/mysql/mysql8/bin
./mysqld --user=mysql --basedir=/usr/local/mysql/mysql8 --datadir=/usr/local/mysql/mysql8/data/ --initialize
-
./mysqld
:指向 MySQL 服务器的可执行文件。通常位于 MySQL 安装目录中的bin
子目录下,比如/usr/local/mysql/mysql8/bin/mysqld
。 -
--user=mysql
:指定以mysql
用户的身份运行 MySQL 服务器。这是为了确保 MySQL 进程具有适当的文件权限,特别是对于数据目录的读写权限。 -
--basedir=/usr/local/mysql/mysql8
:指定 MySQL 的安装根目录。MySQL 将根据此路径找到二进制文件和其他相关资源(如share
目录中的支持文件)。 -
--datadir=/usr/local/mysql/mysql8/data/
:指定 MySQL 的数据存储目录。在初始化过程中,MySQL 会在此目录下创建系统数据库和必要的文件,以便 MySQL 服务能够正常运行。 -
--initialize
:执行初始化操作。这会在指定的数据目录中创建 MySQL 系统表和其他必要的系统文件,此外还会生成一个随机的 root 初始密码。注意,该操作只能在数据目录为空时运行。
10.创建MySQL数据文件
创建用于存储 MySQL 数据的目录,包括数据文件、错误日志和临时文件目录,这些目录能够管理和故障排查
mkdir -p /usr/local/mysql/mysql8/data/error
chown -R mysql:mysql /usr/local/mysql/mysql8/data/error
chmod 755 /usr/local/mysql/mysql8/data/error
touch /usr/local/mysql/mysql8/data/error/mysql.log
chown mysql:mysql /usr/local/mysql/mysql8/data/error/mysql.log
chmod 644 /usr/local/mysql/mysql8/data/error/mysql.log
chown -R mysql:mysql /usr/local/mysql/mysql8/data
chmod -R 755 /usr/local/mysql/mysql8/data
mkdir -p /usr/local/mysql/mysql8/data/tmp
chown -R mysql:mysql /usr/local/mysql/mysql8/data/tmp
chmod 755 /usr/local/mysql/mysql8/data/tmp
永久关闭防火墙
vim /etc/selinux/config
11.启动MySQL数据库
service mysql start
查看进程
ps -ef|grep mysql
启动成功没有问题
12.修改数据库密码
mysql -uroot -p
将刚才初始化的密码输入进去
输入修改命令(我修改的密码是123456)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
刷新一下权限并退出
flush privileges;
quit
重启数据库
service mysql restart
13.设置远程登录数据库
新密码登录
查看数据库
远程登录设置
UPDATE user SET host='%' WHERE user='root';
更新 MySQL 数据库中 mysql
库的 user
表,将 root
用户的 host
字段设置为 %
,意味着 root
用户可以从任何主机连接到 MySQL 服务。%
是 MySQL 中的通配符,表示任何 IP 地址。
14.远程连接验证
使用navicat远程连接可以连接;