• Linux MySQL-v8.0.30的安装与配置


    MySQL-v8.0.30的安装与配置

    官网下载地址

    我使用的 MySQL-v8.0.30-minimal版本,下载传至服务器,或者使用 wget 命令直接下载到服务器上。

    1. 拷贝、解压、做全局软链

    $ cp mysql-8.0.30-linux-glibc2.17-x86_64-minimal /usr/local/
    $ cd /usr/local/
    $ tar -xvf mysql-8.0.30-linux-glibc2.17-x86_64-minimal
    
    # 重命名一下
    $ mv mysql-8.0.30-linux-glibc2.17-x86_64-minimal mysql
    
    # 软链
    $ ln -s /usr/local/mysql/bin/mysql /usr/bin 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2. 创建mysql专属用户组和目录

    $ groupadd mysql
    $ useradd -g mysql mysql
    
    # 查看是否创建并指定组成功
    $ id mysql
    uid=1003(mysql) gid=1004(mysql)=1004(mysql)
    
    # 创建mysql专属目录。-p是连级创建目录
    $ mkdir -p /data/mysql
    
    # 刚创建后查看目录所属者是root
    $ ll /data
    总用量 4
    drwxr-xr-x 2 root root 4096 820 12:56 mysql
    
    # 使用chown命令更改文件所属用户为mysql
    # 格式:chown ownn:group [-R] 文件或目录
    $ chown mysql:mysql -R /data/mysql
    $ ll /data
    总用量 4
    drwxr-xr-x 2 mysql mysql 4096 820 12:56 mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    3. 数据库配置

    编辑文件 /etc/my.cnf,如果文件不存在vim命令会自己创建

    $ vim /etc/my.cnf
    
    • 1

    下面是 my.cnf 完整的配置,按需修改

    [mysqld]
    bind-address=0.0.0.0
    port=3306
    user=mysql
    basedir=/usr/local/mysql
    # 数据库存放目录
    datadir=/data/mysql
    socket=/tmp/mysql.sock
    log-error=/data/mysql/mysql.err
    pid-file=/data/mysql/mysql.pid
    lower_case_table_names=1
    
    # character config
    character_set_server=utf8
    symbolic-links=0
    explicit_defaults_for_timestamp=true
    # 如果需要设置简易密码,就关闭验证
    validate_password=OFF
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    4. MySQL启动

    # 初始化数据库
    $ cd /usr/local/mysql/bin
    $ ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
    
    # 设置开机启动
    $ cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    # 启动
    $ service mysql start 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    5. 用户登录及设置

    • 查看初始密码,记下来,登录数据库的时候要输入
    $ grep 'temporary password' /data/mysql/mysql.err
    
    • 1

    在这里插入图片描述

    # 登录用户
    $ mysql -u root -p
    
    # 我这里遇到了两个错误,是启动mysql时缺失两个so库,做一下软链接就好
    报错1:
    mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
    
    报错2:
    mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
    
    # 如果本地没有6的版本就使用yum安装,有就直接软链
    $ ln -s /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5
    $ ln -s /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    登录成功
    在这里插入图片描述

    • 登录数据库成功后,修改密码

    任何数据库命令操作一定要用分号结尾,且涉及到设置修改的需要 flush privileges;

    mysql-> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx';
    mysql> flush privileges;
    
    • 1
    • 2

    (此时 root 的 host 还是 localhost)

    • 允许远程连接

    没有设置远程连接的话,Navicat连接时会报如下错误:
    在这里插入图片描述

    所以需要修改,执行以下命令:

    mysql> use mysql;
    mysql> update user set user.Host='%' where user.User='root';
    mysql> flush privileges;
    
    • 1
    • 2
    • 3

    一定要先执行 use mysql;,否则就会收获如下错误:
    在这里插入图片描述
    (更新后的 root 的 host 变成了 %,所以后续修改root密码需要用 %)

    Tips:最后访问时记得在云服务器控制台里,开放对应端口,否则 Navicat 还是连接不上


    题外话:

    mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password
    
    • 1
    # 更改加密方式
    mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVEER;
    
    # 更新用户密码
    mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
    mysql> flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    另外注意,我在修改密码时遇到一个错误:
    问题出在刚才设置的允许远程连接的sql,root 的 host 已经从 localhost 改成了 %

    mysql> alter user 'root'@'localhost' identified by '新密码';
    报错:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
    
    # 查看 user 表里的 user和host字段
    
    mysql> select user,host from user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | root             | %         |
    | mysql.infoschema | localhost |
    | mysql.session    | localhost |
    | mysql.sys        | localhost |
    +------------------+-----------+
    4 rows in set (0.00 sec)
    
    # 因此需要使用正确的host
    mysql> ALTER USER 'root'@'%' IDENTIFIED BY '12345678';
    mysql> flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    分享一下 iOS 发布/测试证书 申请过程
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    LeetCode展平二叉搜索树
    Making Anti-Palindromes
    “SonarQube requires Java 11+ to run“ for java 1.8.0_221
    Postman进阶篇(九)-动态变量(Dynamic variables)随机生成参数
    【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
    VUE、.NET多文件的上传、接收
    阻塞队列BlockingQueue
    httpprompt.ml靶场练习
  • 原文地址:https://blog.csdn.net/qq_39420519/article/details/126456479