Linux 安装 MySQL 8.0

╰半橙微兮° 2022-09-27 06:28 270阅读 0赞

Linux 安装 MySQL 8.0

  • 1-MySQL 下载
  • 2-MySQL 安装
  • 3-MySQL 连接
  • 4-MySQL 问题
    • 4.1-初始化失败
    • 4.2-无法远程登录
    • 4.3-用户授权错误
    • 4.4-Navicat 连接错误

1-MySQL 下载

官方:

  • https://dev.mysql.com/downloads/mysql/

    CentOS 可以选择 Red Hat 版本或者 Linux-Generic 通用版本。

网盘:

  • 链接:https://pan.baidu.com/s/1ZteIZwyIzJPZyEpSppuGhQ
  • 提取码:1104

2-MySQL 安装

a、查看内核版本

  1. cat /etc/redhat-release

在这里插入图片描述
b、新建用户、用户组

  1. # 创建用户 用户组
  2. useradd mysql
  3. # 设置用户密码
  4. passwd mysql

在这里插入图片描述
c、解压 MySQL 免编译包

  1. tar -xvf /data/targz/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz -C /data/opt/

d、重命名 MySQL 文件夹

  1. mv /data/opt/mysql-8.0.19-linux-glibc2.12-x86_64/ /data/opt/mysql-8.0.19_3306

在这里插入图片描述
e、新建 MySQL 文件夹软连接

  1. ln -s /data/opt/mysql-8.0.19_3306/ /usr/local/mysql-8.0.19_3306

在这里插入图片描述
f、新建 MySQL 配置文件 my.cnf

my.cnf 配置文件生效优先级(由高到低):

  • MySQL 启动时指定的具体参数
  • MySQL 启动时指定位置的配置文件。
  • MySQL 数据目录下的 my.cnf 文件。
  • MySQL 读取 /etc/my.cnf 文件。
  • MySQL 默认的参数。

/data/opt/mysql-8.0.19_3306/my.cnf

  1. # 客户端连接设置
  2. [client]
  3. # 连接 MySQL 使用的端口
  4. port = 3306
  5. # 连接 MySQL 使用的套接字文件
  6. socket = /data/data/mysql/8.0.19_3306/mysql.sock
  7. # 设置字符集
  8. default-character-set = utf8mb4
  9. # 服务端设置
  10. [mysqld]
  11. # 服务id(可高可用时区分)
  12. server_id = 01
  13. # 监听端口
  14. port = 3306
  15. # 启动用户
  16. user = mysql
  17. # 数据库默认编码(5.1以下 default-character-set)
  18. character_set_server = utf8mb4
  19. # 数据库默认比对规则、排序规则
  20. collation_server = utf8mb4_bin
  21. # 该目录为根目录(安装目录)
  22. basedir = /data/opt/mysql-8.0.19_3306
  23. # 数据库初始化数据存放目录(创建文件夹且文件夹中无文件)
  24. datadir = /data/data/mysql/8.0.19_3306/data
  25. # 数据库存放临时文件的目录(创建文件夹)
  26. tmpdir = /data/data/mysql/8.0.19_3306/tmp
  27. # 指定客户端程序与数据库间通讯的套接字文件
  28. socket = /data/data/mysql/8.0.19_3306/mysql.sock
  29. explicit_defaults_for_timestamp = true
  30. [mysqld_safe]
  31. # 数据库错误日志(创建文件夹)
  32. log-error = /data/data/mysql/8.0.19_3306/log/mysqld.log
  33. # 数据库启动后进程文件位置
  34. pid-file = /data/data/mysql/8.0.19_3306/3306.pid

g、设置 MySQL 安装文件权限

  1. # 设置所属用户、用户组
  2. chown -R mysql:mysql /data/opt/mysql-8.0.19_3306/
  3. # 设置文件权限
  4. chmod -R 755 /data/opt/mysql-8.0.19_3306/

在这里插入图片描述
h、新建 MySQL 运行数据文件夹

  1. mkdir -p /data/data/mysql/8.0.19_3306/data
  2. mkdir -p /data/data/mysql/8.0.19_3306/log
  3. mkdir -p /data/data/mysql/8.0.19_3306/tmp

i、设置 MySQL 运行数据文件夹权限

  1. chown -R mysql:mysql /data/data/mysql/8.0.19_3306/
  2. chmod -R 755 /data/data/mysql/8.0.19_3306/

在这里插入图片描述
j、初始化 MySQL

MySQL 5.7.2 及以上版本与以前版本不同,很多资料上使用命令./scripts/mysql_install_db,而在 MySQL 5.7.2 中 mysql_install_db 的指令在 bin 目录下,官网说明使用 mysqld —initialize 进行初始化

  1. # 切换 mysql 用户
  2. su mysql
  3. # 使用 /etc/my.cnf 配置文件(默认)初始化
  4. /data/opt/mysql-8.0.19_3306/bin/mysqld --initialize
  5. # 指定配置文件初始化(可启动多个数据库)
  6. /data/opt/mysql-8.0.19_3306/bin/mysqld --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf --initialize

在这里插入图片描述
记住临时密码,登录 MySQL 使用:
A temporary password is generated for root@localhost: BFKs/e1shO6x
在这里插入图片描述
k、启动 MySQL

  • MySQL mysqld mysqld_safe mysql.server mysqld_multi 启动区别

    使用 /etc/my.cnf 配置文件(默认)

    /data/opt/mysql-8.0.19_3306/bin/mysqld

    指定配置文件初始化,启动时仍需指定

    /data/opt/mysql-8.0.19_3306/bin/mysqld —defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf

在这里插入图片描述
l、查看 MySQL 进程

  1. ps -ef|grep mysql-8.0.19

在这里插入图片描述


3-MySQL 连接

a、登录 MySQL

临时密码登录:A temporary password is generated for root@localhost: BFKs/e1shO6x

  1. # 使用 /etc/my.cnf 配置文件(默认)初始化
  2. # /data/opt/mysql-8.0.19_3306/bin/mysql -u root -p
  3. # 指定配置文件初始化(可启动多个数据库)
  4. /data/opt/mysql-8.0.19_3306/bin/mysql --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf -u root -p

在这里插入图片描述
b、修改 MySQL 密码

  1. # 格式:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
  2. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

在这里插入图片描述


4-MySQL 问题

4.1-初始化失败

–initialize specified but the data directory has files in it. Aborting:

删除 /data/data/mysql/8.0.19_3306/data 文件夹下所有文件

  1. # 数据库初始化数据存放目录(创建文件夹且文件夹中无文件)
  2. datadir = /data/data/mysql/8.0.19_3306/data

4.2-无法远程登录

客户端无法连接到 MySQL 服务器(网络不通)。
在这里插入图片描述
a、MySQL 是否启动成功

  • 查看 MySQL 进程

    1. ps -ef|grep mysql-8.0.19

    在这里插入图片描述

  • 登录 MySQL

    1. /data/opt/mysql-8.0.19_3306/bin/mysql --defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf -u root -p

    在这里插入图片描述
    b、MySQL 是否占用 3306 端口

    yum install -y net-tools

    netstat -lnp|grep 3306

在这里插入图片描述
c、客户端是否 ping 通服务器
在这里插入图片描述
d、客户端是否可连接 ip:port

  • Windows 开启 telnet 服务

    telnet 192.168.31.117:3306

在这里插入图片描述
e、Linux 关闭防火墙或开放端口

  • 关闭防火墙

    1. # 防火墙状态
    2. firewall-cmd --state
    3. # 停止 firewall
    4. systemctl stop firewalld.service
    5. # 禁止 firewall 开机启动
    6. systemctl disable firewalld.service
  • 开放端口

    1. # 查看已开放端口
    2. firewall-cmd --list-ports
    3. # 开启端口:--zone #作用域 --add-port=80/tcp #添加端口(端口/通讯协议) --permanent #永久生效(无此参数重启后失效)
    4. firewall-cmd --zone=public --add-port=80/tcp --permanent
    5. # 关闭 selinux:将 etc/selinux/config 文件中 SELINUX=enforcing 改为 SELINUX=disabled
    6. vi /etc/selinux/config

f、MySQL 再次远程登录

客户端连接 MySQL 服务器被拒绝(网络通,被拒绝)。
在这里插入图片描述
g、授权用户远程登录

  • MySQL 命令 创建数据库 添加用户 用户授权

    MySQL 命令行模式登录

    /data/opt/mysql-8.0.19_3306/bin/mysql —defaults-file=/data/opt/mysql-8.0.19_3306/my.cnf -u root -p

    mysql db 中 user 表存储了用户信息

    use mysql

    root 用户的 host 显示 localhost,只支持服务器访问,不支持远程访问

    select host, user, authentication_string, plugin from user;

在这里插入图片描述

  1. # 创建远程登录用户 密码
  2. CREATE USER 'root'@'%' IDENTIFIED BY '123456';
  3. # 用户登录加密规则修改为 mysql_native_password*
  4. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  5. # 授予 root 用户远程访问权限 GRANT ALL(所有权限) %(通配所有 host,可访问远程)
  6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  7. # MySQL 权限放在 cache(grant 表)中,必须重新重新加载
  8. flush privileges;
  9. # root 用户的 host 显示 %,支持远程访问
  10. select host, user, authentication_string, plugin from user;

在这里插入图片描述
h、MySQL 远程登录成功
在这里插入图片描述

4.3-用户授权错误

  • MySQL 8.0 用户授权错误

4.4-Navicat 连接错误

MySQL 8.0 版本与 MySQL 5.0 版本加密规则不一致,当前可视化工具只支持旧的加密方式,解决方法:

  • 升级 Navicat 驱动。
  • MySQL 修改加密规则为 mysql_native_password。

    1. # 修改加密规则
    2. ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
    3. # 修改 root 用户密码
    4. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    5. # 刷新权限
    6. flush privileges;

发表评论

表情:
评论列表 (有 0 条评论,270人围观)

还没有评论,来说两句吧...

相关阅读