mysql 6安装当前密码_MySQL8.0 安装踩坑指南

就在昨天上午,刚为云服务器安装好Apache2.4.33和PHP7.2.4环境,准备再来一个最新的MySQL5.7.22。寻找5.7版本的rpm包时下到mysql80xxx.rpm,看人家的教程是mysql57,难道80是MySQL出出…出了8版,一搜新闻2个小时前MySQL发布了8.0.11正式稳定版(GA)。我心里什么感觉

——刚刚准备起步就被超车

看到宣传的2倍性能提高、诸多新特性,objk。那就来飙(踩)车(坑)吧,果断放弃MySQL5.7直接上8。

MySQL8.0用到了新的密码插件验证方式,5.7叫做mysql_native_password,8.0叫做caching_sha2_password,这种加密方式让很多和MySQL连接的界面工具(如Navicat)或编程语言(如PHP)mysqli接口失效:

Error : The server requested authentication method unknown to the client [caching_sha2_password]

报错:客户端不知道服务器要求验证的规则[caching_sha2_password],

queyui.png

目标:在云服务器Linux和本地windows都上最新MySQL8.0.11,同时让PHP7能连通用mysqli接口连通。

工具:PuTTY用于远程连接云服务器输入命令;FileZilla Client监控服务器的文件目录,看看到底命令做了什么。

windows版

1、在官方下载MySQL ZIP压缩版

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

MrQBzy.png

2、解压后放到任意一个你指定的目录

例如:E:\myServer\mysql-8.0.11-winx64

新建自定义默认配置文件my.ini内容如下,根据实际存放地址修改路径

[mysqld] # port 设置端口 ,若设置3306是默认端口可生路# basedir 设置MySQL的安装目录  # datadir 设置MySQL数据库的数据的存放目录port = 3380basedir=E:\myServer\mysql-8.0.11-winx64\datadir=E:\myServer\mysql-8.0.11-winx64\data# mysql8.0.11 默认值为caching_sha2_passworddefault_authentication_plugin=mysql_native_password[client]# cmd.exe MySQL命令行所用端口 与上方保持一致port = 3380# https://dev.mysql.com/doc/refman/8.0/en/connecting.html

3、以管理员身份进入命令行cmd.exe执行安装和初始化

注意:以管理员身份执行cmd.exe,输入完一行指令按回车键执行

语句解释如下,默认路径为E:\myServer请根据实际修改# 1 [跳转到MySQL主进程mysqld目录]E:cd E:\myServer\mysql-8.0.11-winx64\bin# 2 [加入windows服务,自定义名字MySQL3380]mysqld -install MySQL3380#3 [初始化将生成数据存放文件夹data,生成无密码root帐号]mysqld --initialize-insecure# 4 [启动MySQL服务]net start MySQL3380# 5 通过命令行,进入mysql控制台。默认密码为空,回车即可mysql -u root -p#--------------------------------------------# [卸载服务(未用到)]net stop MySQL3380sc delete MySQL3380

[上方指令动图演示.gif]

fUBRru.gif

Linux版

环境为云服务器系统版本CentOS7.3,使用Yum Repository安装

[root@codenight ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)

发现系统目录/etc下存在一个MySQL配置文件my.cnf(2016年11月显然是系统自带的),我们想知道在执行mysql-server过程中,哪一步会生成或修改my.cnf,默认存的内容只有几行

[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockassorted security riskssymbolic-links=0[mysqld_safe]log-error=/var/log/mariadb/mariadb.logpid-file=/var/run/mariadb/mariadb.pid!includedir /etc/my.cnf.d

1.下载MySQL8.0.11的.rpm文件

wget  https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

这一步在服务器 /root 目录下载文件mysql80-community-release-el7-1.noarch.rpm

2.安装rpm包

rpm -ivh mysql80-community-release-el7-1.noarch.rpm --force --nodeps

这一步在 /etc/yum.repos.d/ 目录下生成两个文件:

mysql-community.repo

mysql-community-source.repo

3.安装mysql-community-server

yum install mysql-community-server

弹出对话框确认y,最终Complete! 这一命令安装了很多

B7z2Yr.png

就是这一步生成了新的MySQL配置文件my.cnf,主要内容如下,不必修改

# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html[mysqld]# innodb_buffer_pool_size = 128M# log_bin# join_buffer_size = 128M# sort_buffer_size = 2M# read_rnd_buffer_size = 2M## 移除default_authentication_plugin前面的#, # 这样就可以兼容老旧的客户端了。有关内容请看:# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin# default-authentication-plugin=mysql_native_passworddatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socklog-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid

4、启动mysqld服务并加入开机自启动

[root@codenight ~]# systemctl start mysqld.service[root@codenight ~]# systemctl enable mysqld.service

5、获取临时登录密码

[root@codenight ~]# grep 'temporary password' /var/log/mysqld.log

复制其中返回的密码:

ZNNN3i.png

小提示:如果密码死活不对,复制到记事本仔细核对。还不行的话只能用黑魔法(其实最大的可能还是密码复制错了),去到/var/log/下载mysqld.log,找到里面的password修改自定义密码上传mysql.log并重启MySQL服务

6、登录数据库输入以上密码

[root@codenight ~]# mysql -u root -p

执行任意SQL语句都会提示错误

mysql> SHOW DATABASES;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

[错误1820] 提醒必须使用ALTER USER重置你的密码

7、重置密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';ERROR 1819 (HY000): Your password does notsatisfy the current policy requirements

[错误 1819]提示你的密码不满足当前policy要求

原因是validate_password.policy的默认值是1(中级强度),除了8位长度必须要含有数字、大小写字母、特殊字符至少一种,例如3ONbm

mm2aQn.png

https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html#sysvar_validate_password.policy

如果还是想用简单8位密码例如abc54321,降低policy的值

mysql> SET GLOBAL validate_password.policy=0;Query OK, 0 rows affected (0.00 sec)

现在密码就改为12345678了

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

8、开放远程连接

我们直接在user表插入一个条适用于任何主机,登录名为root密码为12345678的记录,刷新权限就可以远程登陆了,确认服务器安全组或已放行3306端口。

USE mysql;INSERT INTO `user` VALUES ('%', 'root', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', '0', '0', '0', '0', 'mysql_native_password', '*84AAC12F54AB666ECFC2A83C676908C8BBC381B1', 'N', '2018-04-21 11:25:16', null, 'N', 'Y', 'Y', null, null);FLUSH PRIVILEGES;

看看用户权限表里面用户和密码

mysql>  SELECT host,user,plugin,authentication_string FROM mysql.user;+-----------+------------------+-----------------------+---------------------------------------------------------------------+| host      | user             | plugin                | authentication_string                                               |+-----------+------------------+-----------------------+---------------------------------------------------------------------+| %         | root             | mysql_native_password | *84AAC12F54AB666ECFC2A83C676908C8BBC381B1                           || localhost | mysql.infoschema | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                           || localhost | mysql.session    | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                           || localhost | mysql.sys        | mysql_native_password | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                           || localhost | root             | caching_sha2_password | $A$005$0qyQJPnk>R5J>~}tGo2dCdahVKfz42pCUr/3tLWJYERvir2Mr5jUUkBR2B |+-----------+------------------+-----------------------+---------------------------------------------------------------------+5 rows in set

注:同样的密码12345678生成的密文string,第一行是native加密的结果,第五行是sha2加密的结果,服务器命令行使用的是host=localhost AND user=root,远程连接使用host=% AND user=root

9、优雅降级

现在Navicat可以远程连接上了,PHP等编程语言调用的mysqli接口还不行,因为MySQL8.0.11 前天才发布正式版,这些程序接口都没来得写(PHP最新一版是3月30号),所以加密plugin需要设置为mysql_native

6Zn2U3.png

修改/etc/my.cnf,保存并重启MySQL服务器

BfE3ey.png

[root@codenight ~]# systemctl restart mysqld.service

10、其他相关错误处理

RRvmAn.png

例如密码12345678,user表里的authentication_string字段必须存放根据 plugin字段指明的规则生成的密文,否则无论如何输入都提示密码错误的

Qni26v.png

参考资料:

[官方]使用Yum Repository安装MySQL:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html

CentOS7 通过YUM安装MySQL5.7:https://www.cnblogs.com/jorzy/p/8455519.html

https://blog.csdn.net/wisdom_c_1010/article/details/55506081

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch环境搭建和介绍(Windows)

一、Elasticsearch介绍和安装 1.1 介绍 Elastic Elastic官网:https://www.elastic.co/cn/ Elastic有一条完整的产品线:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK技术栈。 Elasticsearch Elasticsearch官网&#xff1…

Jar Hell变得轻松–用jHades揭秘classpath

Java开发人员将不得不面对的最困难的问题是类路径错误: ClassNotFoundException , NoClassDefFoundError ,Jar Hell, Xerces Hell和company。 在本文中,我们将探究这些问题的根本原因,并了解最小的工具&am…

程序控制发送文件到邮箱_Kindle电子邮箱推送

Kindle 推送支持的格式目前 Kindle 推送仅支持以下几种格式。需要注意的是,AZW 和 AZW3 是两种不同的格式,虽然这两种格式 Kindle 设备都支持阅读,但是亚马逊的个人文档服务支持推送 AZW 但是不支持 AZW3。Kindle 格式 (.mobi 或 .azw) * 推荐…

mysql的英文字母_MySQL中查询的有关英文字母大小写问题的分析

mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的。1. 什么是字符集和校验规则?字符集是一套符号和编码。校对规则…

写接口给别人调用 推送数据到我们_我们写了一个超好用的抖音矩阵数据管理工具...

我最近跑了十来个抖音号,遇到一些问题,然后通过我们NB的程序员解决了。如果你也在做抖音矩阵,那这些问题你肯定也会遇到,所以我把解决问题的方法工具化了,给大家用。我遇到的最大的问题,就是账号数据的同步…

angular 拼接html 事件无效

主要是要引用$compile方法 更多专业前端知识,请上 【猿2048】www.mk2048.com

更好地利用Pmd,Findbugs和CheckStyle的结果。

我们可以列举许多Java静态分析工具,每种工具都专注于特定领域并具有其优势,我们可以列举一下: Pmd是基于静态规则集的Java源代码分析器,它识别潜在的问题,例如: 可能的错误-空的try / catch / finally / s…

Java基础知识(数据类型和集合)

一、数据类型 包装类型 包装类型是对基本数据类型不足之处的补充。 基本数据类型的传递方式是值传递,而包装类型是引用传递,同时提供了很多数据类型间转换的方法。 Java1.5 以后可以自动装箱和拆箱 二、集合 List:有序、可重复。可以通过索引…

mfc使用cef源代码实现_如何获得微信小游戏跳一跳源码以及源代码组合包括哪些...

很多小游戏都是由源代码编写而成的,那大家知道源代码组合包括哪些吗?手机游戏源代码怎么使用的呢?还有,如何获得微信小游戏跳一跳源码?下面就由奇瑰网小编带大家来了解一下相关的内容吧。   源代码组合包括哪些   源代码作为软件的特殊部分&#…

机器学习过程中欠拟合和过拟合的诊断及解决方法

1.Diagnosing bias vs. variance 2.Regularization and bias/variance 3.Learning curves 4.Deciding what to try next 转载于:https://www.cnblogs.com/CoolJayson/p/9704385.html

angularJS解决数据显示闪一下的问题?-解决办法

转自:https://www.cnblogs.com/e0yu/p/7219930.html?utm_sourceitdadao&utm_mediumreferral#undefined 使用 angular JS 的时候,把 angularJS 放到文件底部,在渲染页面的时候,会出现闪一下的情况: 解决办法一&a…

定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱

本文实例为大家分享了python实现定时发送邮件到指定邮箱的具体代码,供大家参考,具体内容如下整个链路:传感器采集端采集数据,边缘端上传数据库,从数据库拿到数据。产品端有个自动出报告的需求,并且希望自动…

php异常处理机制

转自:https://www.cnblogs.com/water0729/p/5802476.html php异常我们常接触到的就是error错误码1,warning错误码2,notice错误码8这三类。出现error了系统是挂掉了,但是warning和notice是我们可以捕捉并处理的 php配置项display_e…

IDEA中使用Maven

Maven的安装与使用 安装 1、下载,官网下载。 2、解压,存放路径中不可包含空格和中文。如:"E:\dev\workspace\maven\apache-maven-3.6.0" 3、配置本地仓库,进入 "conf/settings.xml" 中,在 setting…

python用turtle画彩虹_Python利用turtle库绘制彩虹代码示例

语言:PythonIDE:Python.IDE需求做出彩虹效果颜色空间RGB模型:光的三原色,共同决定色相HSB/HSV模型:H色彩,S深浅,B饱和度,H决定色相需要将HSB模型转换为RGB模型代码示例:#…

MongoDB事实:商品硬件上每秒插入80000次以上

在尝试一些时间序列集合时,我需要一个大数据集来检查我们的聚合查询在增加数据负载的情况下不会成为瓶颈。 我们解决了5000万份文档,因为超出此数目我们仍然会考虑分片。 每次事件如下所示: {"_id" : ObjectId("5298a5a03b3…

day 17python 面对对象之继承

一:什么面向对象的继承? 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承自”另一个类别B,就把这个A称为“B的子类别”,而把B称…

mybatis源码_Mybatis源码之SqlSession

SqlSession简介Mybatis是一个强大的ORM框架,它通过接口式编程为开发者屏蔽了传统JDBC的诸多不便,以简单的方式提供强大的扩展能力。其中的接口式编程就是指日常使用的Mapper接口,Mybatis借助动态代理实现了sql语句与Mapper的接口的动态绑定&a…

r语言kmodes_聚类分析——k-means算法及R语言实现

我们知道『物以类聚,人以群分』,这里并不是分类问题,而是聚类问题。两者主要区别在于,分类是将一组数据根据不同的类区分,已经知道有哪些类,也就是数据已经有了类的标签。而聚类是一种事先不知道有多少类&a…

VSCode安装jshint插件报错

Mac电脑上使用VSCode安装jshint插件时提示如下错误: Failed to load jshint library. Please install jshint in your workspace folder using npm install jshint or globally using npm install -g jshint and then press Retry. 按照提示,使用np…