CentOS 8 上安装MySQL8教程

目录

一.安装MySQL8

二.设置MySQL密码

三.创建新数据库

四:添加用户、设置权限

1.创建新用户

2.给该用户添加权限

3.如需查看用户及权限

五:解决Node.js mysql客户端不支持认证协议引发的“ER_NOT_SUPPORTED_AUTH_MODE”问题


一.安装MySQL8

MySQL8的安装方式有很多种,由于CentOS 8 上提供 MySQL 8.0。这个安装通过简单输入dnf install @mysql就可以完成,所以本文以此为例,使用yum等其他方式可以自行查找。

以 root 或者其他有 sudo 权限的用户身份,通过使用 CentOS 包管理器来安装 MySQL 8.0 服务器:

sudo dnf install @mysql

 @mysql  模块会安装 MySQL 和所有依赖安装包。

一旦安装完成,启动 MySQL 服务并且启用开机启动功能,运行下面的命令:

sudo systemctl enable --now mysqld

检查 MySQL 服务器是否正在运行,输入:

sudo systemctl status mysqld
● mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-10-17 22:09:39 UTC; 15s ago
   ...

二.设置MySQL密码

运行 mysql_secure_installation 脚本,执行一些安全相关的操作,并且设置 MySQL root 用户密码:

sudo mysql_secure_installation

你将会被问到配置 VALIDATE PASSWORD PLUGIN ,这个插件是用来测试 MySQL 用户的密码强度和提高安全性的。有三个密码安全级别,弱,中等,强。如果你不想设置密码验证插件,请直接按Enter回车。

在下一个被提示的地方,你会被问到给 MySQL root 用户设置密码。请务必记住你的密码。一旦你操作完成,脚本将会要求你移除匿名用户,限制 root 用户访问本地机器,移除 test 测试数据库。你对于所有的问题都应该回到”Y“(yes)。

为了通过终端命令行与 MySQL 数据库交互,使用已经安装的 MySQL 客户端工具。测试 root 用户访问,输入:

mysql -u root -p

当被提示的时候,输入 root 用户密码,MySQL shell 将会展示如下:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.17 Source distribution

现在你的 MySQL 服务器已经开启并运行了,你可以连接 MySQL shell,并且开始创建新的数据库和用户了。

三.创建新数据库

我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:

CREATE DATABASE 数据库名;

以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:

[root@host]# mysql -u root -p   
Enter password:******  # 登录后进入终端

mysql> create DATABASE RUNOOB;

 由于篇幅限制。此处省却创建表、字段内容教程

四:添加用户、设置权限

MySQL8.0之前在添加用户的时候可以直接设置用户权限如:

GRANT ALL ON *.* TO `zqj`@`ip` IDENTIFIED BY 'passowrd' WITH GRANT OPTION;

但是在新版MySQL中这样就会报错,必须分开开,先创建用户,然后才能设置权限如下:

CREATE USER `zqj`@`ip` IDENTIFIED BY 'zqj' [PASSWORD EXPIRE INTERVAL 90 DAY];
GRANT ALL ON *.* TO `zqj`@`127.0.0.1` WITH GRANT OPTION;

1.创建新用户

CREATE USER 'user1'@'%' IDENTIFIED BY '07fa533360d9'; 
如
CREATE USER 'yunwei01'@'%' IDENTIFIED BY 'yunwei01';

'%' - 所有情况都能访问 'localhost' - 本机才能访问 '111.222.33.44' - 指定 ip 才能访问

注:修改密码

update mysql.user set password=password('新密码') where user='user1';

2.给该用户添加权限

grant all privileges on 想授权的数据库.* to 'user1'@'%';
如:
GRANT all PRIVILEGES on zldc.* to 'yunwei01'@'%';

flush privileges;

all 可以替换为 select,delete,update,create,drop

3.如需查看用户及权限

使用root用户登录后,执行:

select user,host from mysql.user;

结果如下:

五:解决Node.js mysql客户端不支持认证协议引发的“ER_NOT_SUPPORTED_AUTH_MODE”问题

报错:Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

出错原因

导致这个错误的原因是,目前,最新的mysql模块并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默认的加密方式。因此,下面的方式命令是默认已经使用了“caching_sha2_password”加密方式,该账号、密码无法在mysql模块中使用。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.12 sec)

解决方法

解决方法是重新修改用户root的密码,并指定mysql模块能够支持的加密方式:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.12 sec)

上述语句,显示指定了使用“mysql_native_password”的加密方式。这种方式是在mysql模块能够支持。

再次运行应用,成功。

参考资料:

如何在 CentOS 8 上安装 MySQL - 云+社区 - 腾讯云

新版mysql8.0.12添加用户并设置权限避免踩坑! - 知乎

MySQL 创建数据库 | 菜鸟教程

解决Node.js mysql客户端不支持认证协议引发的“ER_NOT_SUPPORTED_AUTH_MODE”问题_老卫的技术站-CSDN博客_js连接mysql出错

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值