linux离线安装mysql8(单机版)

文章目录


  • 前言,这里以mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz版本为例

一、检查服务器是否有残留mysql资源,有的话就全删除

1.1、查询mysql已安装的相关依赖:

bash 复制代码
rpm -qa | grep mysql
  • 没有依赖是如图所示的
  • 如果有依赖,就依次卸载依赖
bash 复制代码
# 这里的XXXXXX表示依赖名
rpm -e XXXXXX --nodeps

1.2、查找含有MySQL的目录

bash 复制代码
find / -name mysql
  • 如果有依赖存在,就使用rm -rf 依次全部删除
    例:

    bash 复制代码
    rm -rf /var/lib/selinux/targeted/active/modules/100/mysql

二、安装

2.1、上传mysql安装包到文件夹下并解压

bash 复制代码
tar -xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz

2.2、移动及重命名

bash 复制代码
mv mysql-8.0.26-linux-glibc2.12-x86_64 /usr/local/mysql8

2.3、mysql用户

  • 创建mysql用户
bash 复制代码
useradd mysql
  • 配置mysql密码
bash 复制代码
passwd mysql
  • 给用户赋权限
bash 复制代码
chown  -R  mysql:mysql  /usr/local/mysql8

2.4、配置mysql所需的my.cnf文件

  • 编辑my.cnf
bash 复制代码
vim /etc/my.cnf
  • 配置文件内容
cnf 复制代码
# 优先读取/etc/my.cnf.d目录下配置文件,一般用不着
#!includedir /etc/my.cnf.d
 
# 客服端设置
[client]
 
# 服务套接字位置
socket=/mnt/data/mysql/mysql.sock
 
[mysqld]
 
# 数据目录,路径的位置根据实际情况配置,给目录指定权限,否真会报权限问题
datadir=/mnt/data/mysql/mysql-data
 
# mysql端口号
port = 3306
 
# 日志文件输出,需要给目录配置权限,否则会报目录权限问题
log-error=/mnt/data/mysql/mysql-logs/mysql.log
 
# 不区分大小写
# MySQL在Windows上会将所有的表名和数据库名转换为小写,并且在查询时不区分大小写。这有助于在不同操作系统之间移植数据库
lower_case_table_names=1
 
# 服务套接字位置,需要给目录配置权限
socket=/mnt/data/mysql/mysql.sock
 
# 是否与旧版本的客户端兼容,可能需要将此参数设置为mysql_native_password
# default_authentication_plugin=mysql_native_password
 
# 最大传输如果数据包超过这个大小,MySQL会报错
# max_allowed_packet=64M
 
# 最大连接并发数据量
# max_connections=1000

2.5、给my.cnf配置文件中指定的目录配置权限:(否则会在初始化时或是启动时出现问题,如果出现问题,应该实时查看初始化时与启动时的mysql.log日志)

bash 复制代码
chown -R mysql:mysql /mnt/data/mysql/mysql-data
chown -R 755  /mnt/data/mysql/mysql-data
chown -R mysql:mysql /mnt/data/mysql/mysql-logs
chmod -R 755 /mnt/data/mysql/mysql-logs
chown -R mysql:mysql /mnt/data/mysql
chown -R 755  /mnt/data/mysql
chmod -R 777 /mnt/data/mysql/
  • 如果未检测到文件夹,就创建文件夹,然后再重新执行
bash 复制代码
mkdir -p /mnt/data/mysql/mysql-data
mkdir -p /mnt/data/mysql/mysql-logs

2.6、配置命令

  • 设置命令,方便命令操作,软链接执行mysql8下对应命令文件,执行下面所有的指令
bash 复制代码
ln -snf /usr/local/mysql8/bin/mysql /usr/bin/mysql
 
ln -snf /usr/local/mysql8/bin/mysqld /usr/sbin/mysqld 
 
ln -snf /usr/local/mysql8/bin/mysqladmin /usr/bin/mysqladmin
 
ln -snf /usr/local/mysql8/bin/mysqlbinlog /usr/bin/mysqlbinlog
 
ln -snf /usr/local/mysql8/bin/mysqlcheck /usr/bin/mysqlcheck
 
ln -snf /usr/local/mysql8/bin/mysql_config_editor /usr/bin/mysql_config_editor
 
ln -snf /usr/local/mysql8/bin/mysqldump /usr/bin/mysqldump
 
ln -snf /usr/local/mysql8/bin/mysqldumpslow /usr/bin/mysqldumpslow
 
ln -snf /usr/local/mysql8/bin/mysqlimport /usr/bin/mysqlimport
 
ln -snf /usr/local/mysql8/bin/mysqlpump /usr/bin/mysqlpump
 
ln -snf /usr/local/mysql8/bin/mysql_secure_installation /usr/bin/mysql_secure_installation
 
ln -snf /usr/local/mysql8/bin/mysqlshow /usr/bin/mysqlshow
 
ln -snf /usr/local/mysql8/bin/mysqlslap /usr/bin/mysqlslap
 
ln -snf /usr/local/mysql8/bin/mysql_tzinfo_to_sql /usr/bin/mysql_tzinfo_to_sql
 
ln -snf /usr/local/mysql8/bin/mysql_upgrade /usr/bin/mysql_upgrade
  • 这样就安装成功了,查看一下mysql版本
bash 复制代码
mysql -V
mysqld -V

2.7、修改系统配置

2.7.1、修改/etc/profile,添加export PATH=$PATH:/usr/local/mysql8/bin

bash 复制代码
vim /etc/profile
  • 在配置文件末尾添加
profile 复制代码
export PATH=$PATH:/usr/local/mysql8/bin

2.7.2、配置启动项

  • 在mysql8下拷贝mysql.server到/etc/init.d目录下:
bash 复制代码
cp /usr/local/mysql8/support-files/mysql.server  /etc/init.d/mysqld
  • 修改/etc/init.d/mysqld的基础路径:
bash 复制代码
vim  /etc/init.d/mysqld
  • 修改目录位置:
cnf 复制代码
basedir=/usr/local/mysql8 (mysql的安装路径)
datadir=/mnt/data/mysql/mysql-data  (这里要与配置文件保持一致)
  • 保证service mysql 或 mysqld start均可启动:
bash 复制代码
cp  /etc/init.d/mysqld  /etc/init.d/mysql
  • 添加到启动列表:
bash 复制代码
chkconfig --add mysqld
  • 重新加载启动信息:
bash 复制代码
systemctl daemon-reload
  • 查看启动项列表
bash 复制代码
chkconfig --list

三、启动

3.1、初始化mysql服务

  • 初始化命令:--basedir:根据实际mysql安装路径
bash 复制代码
mysqld --user=mysql --basedir=/usr/local/mysql8 --initialize 
  • 初始化后,查看mysqld.log(默认/var/log/mysqld.log或本文取决于my.cnf的日志路径配置),找到root初始密码,在执行上方initialize语句时mysqld.log文件中就会打印,如图所示:

  • 启动mysql:

bash 复制代码
service mysqld start
  • 使用root登录:
bash 复制代码
mysql -uroot  -p
  • 首次需要修改密码 :
bash 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY  '新密码';

四、问题拓展

4.1、安装成功后,登录报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO),或ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

出错原因
using password: NO:表示输入没有输入密码就尝试登陆了
using password: YES:表示输入了密码,但密码错误

这里表示很有可能是忘记密码了,或者初始化的时候,初始化密码不生效,因此需要重设密码。

4.1.1 设置跳过密码验证

找到 MySQL 的配置文件 "my.ini",如果自己配置了配置文件,就到自己配置的配置文件里面找,比如我们当前文档2.4处配置的文件地址为/etc/my.cnf,vim配置文件后,找到 [mysqld],在其下面任意一行添加 skip-grant-tables,保存,如下图所示:

4.1.2 重启mysql后进行登录

  • 重启
bash 复制代码
service mysqld restart
    • 使用root登录,出现输入密码时,直接回车就好了:
bash 复制代码
mysql -uroot  -p

4.1.3 将登录密码设置为空

  • 依次执行命令
sql 复制代码
use mysql;

update user set authentication_string='' where user='root';

quit;

4.1.4、修改新密码

  • 重启
bash 复制代码
service mysqld restart
  • 使用root登录,出现输入密码时,直接回车就好了,因为此时密码为空:
bash 复制代码
mysql -uroot  -p
  • 刷新权限,输入 flush privileges;后回车
  • 最后输入ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';后回车
sql 复制代码
# 刷新权限
flush privileges;

# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

4.2、新安装的mysql,登录后,执行任何命令报错:You must reset your password using ALTER USER statement before executing this statement.

解决办法

  • MySQL版本5.7.6版本以前用户可以使用如下命令:
sql 复制代码
mysql> SET PASSWORD = PASSWORD('Admin2022!');
  • MySQL版本5.7.6版本开始的用户可以使用如下命令:
sql 复制代码
mysql> ALTER USER USER() IDENTIFIED BY 'Admin2022!';
相关推荐
漫谈网络3 分钟前
基于 Netmiko 的网络设备自动化操作
运维·自动化·netdevops·netmiko
Lucky GGBond9 分钟前
MySQL 报错解析:SQLSyntaxErrorException caused by extra comma before FROM
数据库·mysql
꧁坚持很酷꧂29 分钟前
Linux Ubuntu18.04下安装Qt Craeator 5.12.9(图文详解)
linux·运维·qt
Java水解31 分钟前
Mysql之存储过程
后端·mysql
漫步向前38 分钟前
mysql主备延迟
mysql
凉、介1 小时前
PCI 总线学习笔记(五)
android·linux·笔记·学习·pcie·pci
GarfieldFine1 小时前
MySQL索引使用一定有效吗?如何排查索引效果?
数据库·mysql
电鱼智能的电小鱼1 小时前
EFISH-SBC-RK3588无人机地面基准站项目
linux·网络·嵌入式硬件·机器人·无人机·边缘计算
电鱼智能的电小鱼1 小时前
基于 EFISH-SBC-RK3588 的无人机环境感知与数据采集方案
linux·网络·嵌入式硬件·数码相机·无人机·边缘计算
cypking1 小时前
mysql 安装
数据库·mysql·adb