二进制安装MySQL8
1.创建用户组
[root@localhost ~]# groupadd -g 27 mysql && useradd -g 27 -u 27 -M -s /sbin/nologin mysql
#创建了一个名为mysql的用户和组,分别赋予了它们特定的ID(UID和GID为27),并设置了用户不能直接登录系统,确保MySQL服务在一个具有特定权限和限制的环境中运行,增加了系统的安全性和管理的灵活性
查看mysql用户
2.解压压缩包
[root@localhost ~]# tar xzvf mysql-8.0.26-el7-x86_64.tar.gz
3.移动压缩包
[root@localhost ~]# mv mysql-8.0.26-el7-x86_64 /usr/local/mysql
#如果没有该目录的话会自动创建该目录
4.给mysql用户授权该目录
[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/
#将 /usr/local/mysql/ 目录及其内部所有文件和子目录的所有者和组都更改为 mysql
5.创建日志文件并授权
[root@localhost ~]# mkdir /var/log/mysql.log && chown -R mysql:mysql /var/log/mysql.log
#日志文件放在哪个目录下都可以,看个人习惯
6.编辑配置文件
[root@localhost ~]# vim /etc/my.cnf
#个人认为最小化且最优配置文件,当然视情况而定
[msyqld]
basedir =/usr/local/mysql
datadir =/usr/local/mysql/data
socket =/usr/local/mysql/data/mysql.sock
pid_file =/usr/local/mysql/data/mysql.pid
user =mysql
port =3306
collation-server =utf8mb4_general_ci
character_set_server=utf8mb4
#日志部分
log-error=/var/log/mysql.log/mysql_error.log
general_log=ON
general_log_file=var/log/mysql.log/mysql_general.log
slow_query_log=ON
slow_query_log_file=var/log/mysql.logmysql_slow_query.log
log-bin=mysql-bin
binlog-format=MIXED
server-id = 1
#InnoDB缓冲池大小
innodb_buffer_pool_size = 128M
#InnoDB日志文件大小
innodb_log_file_size = 128M
#InnoDB表空间模式
innodb_file_per_table = 1
#InnoDB刷新方法
innodb_flush_method = O_DIRECT
#其他部分
#临时表最大值
tmp_table_size = 32M
#内存堆表最大值
max_heap_table_size = 32M
#最大连接数,理想数为占比服务器上限的10%
max_connections = 1700
#线程缓存大小
thread_cache_size = 384
#表缓存大小,可减少文件打开/关闭次数,一般max_connections*2。
table_open_cache = 1024
#打开文件上线
open_files_limit = 65535
[client]
socket =/usr/local/mysql/data/mysql.sock
port =3306
7.添加环境变量
1.[root@localhost ~]# cat >>/etc/profile<<EOF
> export PATH=\${PATH}:/usr/local/mysql/bin/
> EOF #将/usr/local/mysql/bin/目录添加到系统的PATH环境变量中,使得系统能够在该目录中查找MySQL的可执行文件
2.[root@localhost ~]# echo 'export PATH=${PATH}:/usr/local/mysql/bin'>>/etc/profile #将export PATH=${PATH}:/usr/local/mysql/bin这行代码追加到/etc/profile文件的末尾
3.[root@localhost ~]# source /etc/profile #立即生效
8.安装依赖
[root@localhost ~]# yum install ncurses-compat-libs libaio
9.初始化数据库,密码在最后一行
[root@localhost ~]# mysqld --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data --user=mysql
mysqld:这是 MySQL 服务器的主程序。它可以执行各种管理任务,如初始化数据目录、升级系统表等。
--initialize:这个选项告诉 mysqld 执行初始化操作。初始化过程包括创建系统表、填充必要的初始数据等,
--basedir=/usr/local/mysql/:这个选项指定了 MySQL 安装的根目录。--basedir 选项用于告诉 mysqld 在哪里可以找到其可执行文件、库文件、配置文件等。
--datadir=/usr/local/mysql/data:这个选项指定了 MySQL 数据目录的位置。--datadir 选项对于初始化操作特别重要,因为它决定了系统表和其他数据库文件应该存放在哪里。
--user=mysql:这个选项指定了运行 MySQL 服务器进程的用户。
10.添加启动脚本
[root@localhost ~]# vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=MySQL Server #服务描述
Documentation=man:mysqld(8) #服务文档链接
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html #官方文档
After=network.target #服务启动顺序,确保网络启动
After=syslog.target #服务启动顺序,确保日志服务已启动
[Install]
WantedBy=multi-user.target #当系统进入多用户模式时(即大多数服务都已经启动),MySQL 服务应该被启动。
[Service]
User=mysql #运行用户
Group=mysql #运行组
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf #启动服务的命令,并指定配置文件
LimitNOFILE = 5000 #设置操作系统默认允许mysql进程最大打开文件的数量
11.启动MySQL
[root@localhost ~]# systemctl daemon-reload #重新加载配置文件
[root@localhost ~]# systemctl enable --now mysql.service #立即开机自启
[root@localhost ~]# systemctl start mysql.service # 启动服务
[root@localhost ~]# systemctl enable mysql #开机自启
[root@localhost ~]# systemctl status mysql #查看服务状态
12.修改密码并设置用不过期
mysql> alter user 'root'@'localhost' identified by 'lmx'; #修改密码
mysql> alter user 'root'@'localhost' password expire never; #设置用不过期
mysql> flush privileges; #重新加载授权列表
mysql> select user(); #查看登录用户
mysql> select version(); #查看版本是否一致
mysql> select user,host from mysql.user; 查看用户表
如果忘记密码的话
可以先停服务,再进入安全模式
在/etc/my.cnf的mysqld中添加 --skip-grant-tables #进入安全模式
mysql -u root #直接登录
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码'); #重置密码