一、官网下载二进制文件
1.先去官网下载mysql-8.0.28的二进制文件,mysql官网MySQL
2.点击下载即可在浏览器下载,如果想下载速度更快可尝试复制下载链接到迅雷进行下载。
二、在Centos7上进行mysql自定义部署
1.检查服务器上是否有旧的mysql文件或mariadb,有的话建议卸载掉以防影响新的mysql数据库启动,如下所示:
rpm -qa | grep mysql #输入内容为空说明不存在旧的mysql
rpm -qa | grep mariadb #如果输出显示有mariadb执行以下命令进行mariadb卸载
yum remove -y mariadb-* #卸载mariadb相关的rpm包
2.关闭SELINUX,执行以下命令,如下所示:
vim /etc/selinux/config
保存以后执行以下命令,如下所示:
setenforce 0 && sudo systemctl restart selinux-policyd
关闭以后,准备解压二进制文件,开始部署mysql服务
3.开始解压二进制文件,执行命令:
tar -xvf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
4.将解压后的目录名修改为mysql,如下所示:
5.新建mysql的数据存放目录和配置文件存放目录,如下所示:
mkdir data etc
6.在服务器上新建mysql用户,看个人需求设置是否可登录。
useradd -M -s /sbin/nologin mysql #创建一个名为 "mysql" 的用户,在创建过程中不会生成家目录,并且设置其登录 shell 为 /sbin/nologin
,从而禁止该用户登录系统
useradd -m -s /bin/bash mysql #系统将在home目录中创建一个名为mysql的用户,并自动为其分配一个与用户名相同的家目录。登录shell被设置为bash,允许该用户登录并使用bash终端。
7.先新建my.cnf,配置相关参数,如下所示:
[mysql]
default-character-set=utf8 #设置字符集为UTF-8编码
collation-server = utf8_unicode_ci #设置服务器的排序规则(collation)为utf8_unicode_ci
init-connect='SET NAMES utf8' #每次新建连接时自动设置字符集,确保连接始终使用正确的字符集进行操作
[mysqld]
user=mysql #通过创建一个名为 "mysql" 的用户,你可以为该用户指定登录数据库时所使用的用户名
basedir=/app/mysql #设置MySQL的安装目录为/app/mysql
datadir=/app/data #设置MySQL的数据目录为/app/data
pid-file=/app/data/mysql.pid #设置MySQL的进程ID文件的路径为/app/data/mysql.pid
server-id=1 ##设置服务器的唯一标识符为1。这个标识符用于在同一台计算机上运行多个MySQL服务器实例时区分它们。每个实例都需要具有唯一的server-id,以便它们可以正常通信和同步数据。
innodb_data_home_dir=/app/data #设置MySQL的InnoDB表空间数据目录的主目录为/app/data
log-error=/app/data/error.log #设置MySQL的错误日志文件的路径为/app/data/error.log
port=3306 #设置MySQL服务器监听的端口号为3306
socket=/app/data/mysql.sock #设置MySQL服务器使用的Unix域套接字(Unix socket)的路径为/app/data/mysql.sock
[mysql]
default-character-set=utf8
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
[mysqld]
user=mysql
basedir=/app/mysql
datadir=/app/data
pid-file=/app/data/mysql.pid
server-id = 1
innodb_data_home_dir=/app/data
log-error=/app/data/error.log
port=3306
socket=/app/data/mysql.sock
8.将mysql的数据存放目录,启动服务目录,配置文件所在目录的用户以及用户组改为mysql,好让mysql用户拥有足够的权限,执行以下命令,如下所示:
chown -R mysql:mysql /app/data /app/etc /app/mysql
9.到mysql目录执行数据库初始化操作,执行以后去error.log里面查看初始化是否成功,成功以后会出现数据库root用户的初始化密码。如下所示:
cd /app/mysql
./bin/mysqld --defaults-file=/app/etc/my.cnf --initialize --basedir=/app/mysql --datadir=/app/data --user=mysql
tail -100f /app/data/error.log
9.使用mysql_safe拉起mysql进程的好处是可以避免因为MySQL进程异常退出而导致的数据丢失和系统崩溃,mysql_safe会先检查MySQL进程的状态,如果发现进程已经退出或者无法正常启动,就会尝试自动重启MySQL进程。在重启过程中,mysql_safe会执行一些必要的操作,比如清理临时文件、恢复数据表等,以确保MySQL进程能够正常启动并提供服务。
为了防止使用mysqld_safe拉起mysql进程在控制台卡住,建议写一个shell脚本进行启动,执行以下命令创建脚本,如下所示:
cd /app/mysql/bin
vim mysqld_safe.sh
#!/bin/bash
./mysqld_safe --defaults-file=/app/etc/my.cnf --basedir=/app/mysql --datadir=/app/data --pid-file=/app/data/mysql.pid --user=mysql >nohup.out 2>&1 &
chmod +x mysqld_safe.sh
./mysqld_safe.sh
10.配置mysql命令可全局使用,如下所示:
vim /etc/profile
export PATH=$PATH:/app/mysql/bin #加在/etc/profile内容的末尾一行
source /etc/profile #重新加载配置文件
执行mysql -uroot -p 进行登录,输入error.log中的root用户初始化密码
出现以上报错,执行以下命令以后,重新登录即可正常登录,如下所示:
ln -s /app/data/mysql.sock /tmp #建立mysql.sock文件的软链接到/tmp下
11.登录到mysql命令模式以后,先修改root用户的初始化密码。
ALTER USER'root'@'localhost' IDENTIFIED BY'password'; --密码根据自己需要将password修改为自己需要的
FLUSH PRIVILEGES; --刷新权限缓存,使新的权限更改生效
创建一个ai用户,用于远程客户端连接使用。如下所示:
CREATE USER'ai'@'%' IDENTIFIED BY'ai123'; --创建ai用户并设置它的密码
GRANT ALL PRIVILEGES ON *.* TO 'ai'@'%'; --赋予ai用户所有库修改权限并放开远程客户端访问权限
SELECT Host, User FROM user; --查看user表里关于ai用户Host那一列是否为通配符,是代表允许所有远程客户端访问
FLUSH PRIVILEGES; ----刷新权限缓存,使新的权限更改生效
12.打开navicat,尝试使用ai用户访问mysql服务器。如下所示:
如果连接被拒查看下是否网络不通,检查下是服务器上的防火墙没关闭或是没放开3306端口。