Administrator
发布于 2023-03-15 / 403 阅读
0
0

Centos7-安装MySQL8

centos7-安装MySQL8

一、准备 mysql 安装包

官方地址:https://downloads.mysql.com/archives/community/
包名:mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz

二、检查系统中是否存在和MySQL或Mariadb相关的包

rpm -qa | grep mysql
rpm -qa | grep mariadb

yum -y remove mariadb-libs.x86_64 或者 
rpm -e --nodeps mariadb-libs.x86_64
#删除 mariadb 包

三、创建MySQL用户

useradd -M -s /sbin/nologin -r mysql
#-M不创建主目录,-s /sbin/nologin不允许登录,-r创建的是系统用户

四、安装依赖包

yum install libaio
#libaio包的作用是为了支持同步I/O

五、解压 MySQL tar包

tar -Jxvf /usr/local/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql
#tar  -z 是--gzip, --ungzip  用 gzip 对存档压缩或解压 
-v 是列出详细  -x 是解压 -f是归档
-C 是解压到哪里

六、创建MySQL数据目录及日志目录

mkdir  /home/mysql8/{data,log}
#创建目录

七、修改目录属性

chown -R mysql:mysql mysql
#chown -R 所有者:所属组 目录

八、初始化数据库

sudo ./usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql8/ --datadir=/usr/local/mysql8/data/

#2023-01-17T23:07:04.567298Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: tWuJot37?Vj<(冒号后面是初始化的密码之后登录会用到)

初始化MySQL配置

 --user: 指定MySQL实例的运行用户,默认为当前登录用户。
 --basedir: 指定MySQL安装的基本目录,默认为解压后的二进制文件所在目录。
 --datadir: 指定MySQL数据目录的路径,默认为basedir/data。
 --initialize: 初始化MySQL实例,创建系统表和数据目录,并生成一个随机密码。
 --initialize-insecure: 初始化MySQL实例,但不生成随机密码。
 --explicit_defaults_for_timestamp: 显式启用TIMESTAMP列的默认值。
 --default-authentication-plugin: 指定MySQL实例的默认身份验证插件。
 --skip-name-resolve: 禁用DNS反解析。
 --skip-grant-tables: 启动MySQL实例时跳过授权表,即允许任何用户以任何方式访问MySQL实例。
 --skip-networking: 禁用网络连接,只能在本地访问MySQL实例。
 --socket: 指定MySQL实例的Unix套接字文件路径。
 --pid-file: 指定MySQL实例的PID文件路径。

示例:
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql --init-file=/tmp/mysql-init.sql --skip-name-resolve --default-authentication-plugin=mysql_native_password --explicit_defaults_for_timestamp=1 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --skip-networking --skip-grant-tables --init-file="/usr/local/mysql/init.sql"

九、编辑MySQL配置文件

vim /etc/my.cnf

[mysqld]
character-set-server=utf8
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=43306
socket=/usr/local/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/tmp/mysqld.pid
local-infile=0
skip_symbolic_links=yes
[mysql]
socket=/usr/local/mysql/mysql.sock
[client]
socket=/usr/local/mysql/mysql.sock
[mysql]

[mysqld]

# 设置 MySQL 数据库的字符集
character_set_server=utf8mb4

# 开启日志记录
general_log=1
general_log_file=/var/log/mysql/general.log
log_error=/var/log/mysql/error.log

# 关闭外部访问
bind-address=127.0.0.1

# 设置密码强度策略
validate_password.policy=LOW,MEDIUM
validate_password_length=8

# 禁用匿名用户
skip-name-resolve
skip-networking
skip-grant-tables
disable-gpl-logging

# 设置密码复杂度
plugin-load-add=validate_password.so

# 设置密码复杂度参数
validate_password_special_char_count=1
validate_password_length=8

# 限制连接数
max_connections=100

# 缓存大小设置
innodb_buffer_pool_size=2G

# 限制查询大小
max_allowed_packet=128M

# 禁用远程 root 登录
root@localhost
root_password

# 关闭远程管理
skip-networking

#根据情况修改相应的参数,按冒号输入wq保存退出

十、配置环境变量

vi /etc/profile
	
#MySQL
export MYSQL_HOME="/home/mysql8"
export PATH="$PATH:$MYSQL_HOME/bin"


#在最下面添加,按冒号输入wq保存退出

source /etc/profile
#刷新配置文件,修改环境变量后需要刷新配置文件

十一、生成启动脚本

cp /home/mysql8/support-files/mysql.server /etc/init.d/mysqld
#复制启动脚本到系统目录

chmod +x  /etc/init.d/mysqld
#添加执行权限

vim /etc/init.d/mysqld
#修改启动路径

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

#在第46~47行  [输入 : set nu 可以看行数]

十二、添加到系统开机自启动

chkconfig --add mysqld
chkconfig mysqld on

十三、启动MySQLd

systemctl restart mysqld
/etc/init.d/mysqld start
/usr/local/mysql/support-files/mysql.server start
#三种启动方式

ss -ntulp | grep mysql
ps -ef | grep mysql
netstat -anpt
#检查是否有这个进程或者端口

十四、登录MySQL并修改密码

mysql -uroot -p'rH,kYufWv57C'
#登录MySQL -u指定用户 -p指定端口

mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';
#其中,new_password为您要设置的新密码

mysql> flush privileges;
#刷新权限

评论