跳至主要內容

CentOS 下安装 MySQL8

大林鸱大约 2 分钟研发工具命令

之前一直使用 MySQL5,但是它的补丁太多了,如果不打补丁,会扫描到很多安全漏洞,建议使用 MySQL8。

MySQL 安装包:mysql-8.0.21-el7-x86_64.tar.gz

安装 MySQL 数据库

1 检查是否有 mariadb,如果存在则卸载

rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs

2 创建 MySQL 安装目录和数据存放目录,并授权

mkdir /usr/local/mysql
mkdir /usr/local/mysql/mysqldb
chmod -R 777 /usr/local/mysql
chmod -R 777 /usr/local/mysql/mysqldb

3 创建 MySQL 组:创建 MySQL 用户

cd /usr/local/mysql
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql ./

4 上传并解压安装包

#将压缩包内文件拷贝到/usr/local/mysql下
cd /usr/local/mysql
tar -zxvf mysql-8.0.21-el7-x86_64.tar.gz

5 创建 MySQL 的安装初始化配置文件 my.cnf

vi /etc/my.cnf
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/mysqldb
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
# 设置数据库大小写不敏感
lower_case_table_names=1
local_infile=1
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
local_infile=1
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

6 初始化 MySQL,并记住密码

cd ./bin
./mysqld --initialize --console
cd /usr/local/mysql/support-files
#我的临时密码:.fdn4f=3p7fO

cd /usr/local/mysql/support-files
./mysql.server start
#如果上述命令报错,则执行下面命令,之后再次执行./mysql.server start
chmod -R 777 /usr/local/mysql

7 将 mysql 添加到系统进程中

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#设置mysql自启动
chmod +x /etc/init.d/mysqld
systemctl enable mysqld

8 修改 root 用户登录密码

cd /usr/local/mysql/bin/
./mysql -u root -p
#输入初始化时记录下的随机密码,就会进入mysql
mysql> alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'gremlins-book';
#设置允许远程登录
mysql> use mysql;
mysql> update user set user.Host='%'where user.User='root';
mysql> flush privileges;
mysql> quit

9 重启服务且测试

systemctl restart mysql
systemctl status mysql
#查看防火墙开放端口
firewall-cmd --list-all
#在防火墙中将3306端口开放
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

10 [非必须]数据导出导入权限与 local_infile 参数

show variables like 'local_infile';
set global local_infile=on;

 Loading local data is disabled; this must be enabled on both the client and server sides
1.在mysql配置文件my.ini修改:
[mysqld]下添加
local_infile = 1
[mysql]下添加
local_infile = 1
2.在数据库连接添加参数allowLoadLocalInfile=true
url=jdbc\:mysql\xxxxx?allowLoadLocalInfile=true
上次编辑于: