吐血整理阿里云安装MySQL8.0及远程连接失败问题

   日期:2020-07-12     浏览:176    评论:0    
核心提示:目录一、绪论二、安装MySQL安装命令三、远程连接解决方案四、参考资料一、绪论小编昨天狠心买了一年的阿里云服务器,想要搭建自己的服务器。有人可能会思考为什么要买阿里云服务器呢?作为开发人员,在日常工作中大家也都会听到搭建阿里云服务器的相关言论。那小编解释一下为什么自己选择要搭建阿里云服务器???灵活度低:日常工作学习中,大家想搭建服务器时,使用的最多就是VMware+Centos7镜像这种免费方式,小编没有买阿里云服务器之前也是这种方式,后来小编感觉到很不方便,小编现在办公用的是公司的笔记本,晚上回

目录

  • 一、绪论
  • 二、安装MySQL
    • 安装命令
  • 三、远程连接
    • 解决方案
  • 四、参考资料

一、绪论

小编昨天狠心买了一年的阿里云服务器,想要搭建自己的服务器。有人可能会思考为什么要买阿里云服务器呢?作为开发人员,在日常工作中大家也都会听到搭建阿里云服务器的相关言论。那小编解释一下为什么自己选择要搭建阿里云服务器???

  1. 灵活度低:日常工作学习中,大家想搭建服务器时,使用的最多就是VMware+Centos7镜像这种免费方式,小编没有买阿里云服务器之前也是这种方式,后来小编感觉到很不方便,小编现在办公用的是公司的笔记本,晚上回家就要天天带着它;万一自己要离职了或者重装系统是不是又要重新搭建一次服务器;
  2. 技术提升:小编毕业进入社会也一年多了,很清楚自己需要的技术栈。对于公司的业务积累是必不可少的一部分,但更重要的是工作之余自己的时间安排(提升技术)。此外,公司的服务器肯定不会让自己搭建各种开发环境的,所以自己想要接触集群、Redis、消息中间件等技术,搭建属于自己的服务器是很重要的选择。

    如果大家也想搭建自己的云服务器,可以点击链接领取福利喔-阿里云优惠券入口

二、安装MySQL

今天在搭建服务器基本开发环境时,遇到一个很扎心的问题,气的小编一口热血喷出。小编安装MySQL8.0版本过程一路顺利,但是问题卡在无法远程连接MySQL服务器,小编第一反应防火墙没有关闭或者3306端口没有开放。一系列命令折腾后还是无法连接,小编真的急了,想口吐芬芳的那种。(haha,遇到事情不要急,慢慢来。。。)。

安装命令

  • 安装mysql
    依次执行下列命令,如遇到中间输入命令,一路输入y即可。
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 
yum localinstall  mysql80-community-release-el7-3.noarch.rpm
yum install mysql-community-client mysql-community-server
  • 启动mysql
    安装结束之后开始启动mysql;
    启动mysql服务:systemctl start mysqld
    检查mysql状态:systemctl status mysqld
    设置开机启动:systemctl enable mysqld

  • 修改用户密码:
    启动服务之后,默认会给root账号设置一个默认密码。默认密码就在 /var/log/mysqld.log 中
    查看mysql启动日志和密码:tail -f /var/log/mysqld.log

[root@izbp14najjyuhkvm4qbic7z ~]# tail -f /var/log/mysqld.log
2020-07-10T06:13:05.709151Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 7DlsLOs8HT+G8(这里就是随机密码)
2020-07-10T06:13:09.845737Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.20) starting as process 23725
2020-07-10T06:13:09.889326Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2020-07-10T06:13:11.008090Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2020-07-10T06:13:11.223551Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
2020-07-10T06:13:11.592032Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
  • 重置密码
    命令:ALTER USER “root”@“localhost” IDENTIFIED BY “xxxxxxx”;
    新版本mysql设置密码需要遵循包含大小写字母特殊字符,否则就会提示下面错误。
ALTER USER "root"@"localhost" IDENTIFIED BY "xxxxxxx";
#ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

以上基本上完成了mysql的安装和配置;开始进入今天的正题,无法连接远程;

三、远程连接

  • 用户信息:
    使用mysql数据库:use mysql;
    查询用户密码命令:mysql> select host, user, authentication_string, plugin from user;
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| host      | user             | authentication_string                                                  | plugin                |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONKKKLLOALTANDPASSWORDTHATMAOOKUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.session    | $A$005$THISISACOMBINATIONOFLOSALIDSALTANDPKIGAKRDTHATMUSTNEVERBRBEUSED | caching_sha2_password |
| localhost | mysql.sys        | $A$005$THISISACOMBINATIOLLOSJINVALIDSALTAHKKKWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

host: 允许用户登录的ip‘位置’%表示可以远程;
user:当前数据库的用户名;
authentication_string: 用户密码
pulgin:Mysql8.0之前数据库加密方式:mysql_native_password ;
MySQL8.0数据库加密方式为:caching_sha2_password ;
综上,host字段均为localhost,意思是只允许本地IP访问,所以是无法被远程访问的。

解决方案

  1. 如果客户端无法访问出现:Authentication plugin ‘caching_sha2_password’ cannot be loaded
    修改其加密规则即可:
# 修改加密规则
ALTER USER "root"@"localhost" IDENTIFIED WITH mysql_native_password BY "xxxxxxx";
  1. 如果客户端无法连接服务器出现10083之类错误提示,则采用以下方式:
  • 方式一,不推荐使用:
# 设置任意IP访问
update mysql.user set host = '%' where user = 'root';
# 刷新生效
FLUSH PRIVILEGES;
  • 方式二:
    新增加一个账号使用支持的验证方式,小编这里采用这种方式。
# 创建用户(密码规则:mysql8.0以上密码策略限制必须要大小写加数字特殊符号):
mysql>create user qxy123@'%' identified by 'WX12.'; # 权限设置 mysql>grant all privileges on *.* to qxy123@'%' with grant option;
# 刷新
mysql>flush privileges;

经过上面一番设置之后,相信大家的问题都能够解决,但是小编是基于阿里云服务器搭建的,相信有经验的大牛都能够想到小编的问题并没有解决。
小编静下心梳理了一下,这种正常启动无法远程连接,基本问题出现在防火墙或者端口设置上,小编直接把防火墙关闭了还是无法连接,于是乎小编继续度娘上找问题的答案,突然看到阿里云字体,瞬间清楚了问题的所在,小编注意力放在了数据库无法连接,却忽略最重要的问题,基于阿里云搭建,阿里云服务器是否未开放入网mysql端口(惊叹),于是乎,~~~~一股脑操作设置安全组入网规则,再次连接终于连接成功了。开发人员果然要不断的采坑才能更好的成长,相信这种经历之后,小编再次经历类似问题一定能够很快的解决问题。加油!!!

四、参考资料

https://www.cnblogs.com/chentop/p/10296310.html

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服