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;
#刷新权限