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,一经查实,立即删除!

相关文章

如何用Java编写最快的表达式评估器之一

当然,标题有点吸引人,但确实如此(您当然不相信自己没有伪造自己的基准,但这是另一回事了)。 因此,上周我正在寻找一个小型且可用的库来评估数学表达式。 我几乎直接偶然发现了这个stackoverflow帖子 。 推…

Elasticsearch环境搭建和介绍(Windows)

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

python 银行业务系统程序编程写_python多线程实现代码(模拟银行服务操作流程)

1.模拟银行服务完成程序代码目前,在以银行营业大厅为代表的窗口行业中大量使用排队(叫号)系统,该系统完全模拟了人群排队全过程,通过取票进队、排队等待、叫号服务等功能,代替了人们站队的辛苦。排队叫号软件的具体操作流程为&…

vue 新版本 webpack 代理 跨域设置

旧版本中:dev-server.js 这段去掉 var apiRoutes express.Router() //getList apiRoutes.get(/getDiscList, function (req, res) {var url https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcgaxios.get(url, {headers: {referer: https://c.y.qq.com…

人月神话(2)

我不知道为什么作者要拿外科医生举例子,在我眼里足球队更合适,或者说更贴近生活,让人们更容易理解。人的专业水平,在刚开始其实没什么可比性,试问:一个有小学学历的人和一个有初中学历的人在大公司招聘时有…

mysql查询出过去一个月_Mysql查询今天、昨天、7天、近30天、本月、上一月 数据...

今天select * from 表名 where to_days(时间字段名) to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) < 17天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(时间字段名)近30天SELECT * FROM 表名 where…

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

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

图像处理中常见的时域与频域区别与关系

本文纯为转载只做个人学习记录用&#xff0c;请自动点击链接到作者原文&#xff1a;https://blog.csdn.net/samkieth/article/details/49561539 一、什么是时域 时域是描述数学函数或物理信号对时间的关系。例如一个信号的时域波形可以表达信号随着时间的变化。 二、什么是频域…

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

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

[USACO06JAN] 牛的舞会 The Cow Prom

题目描述 The N (2 < N < 10,000) cows are so excited: its prom night! They are dressed in their finest gowns, complete with corsages and new shoes. They know that tonight they will each try to perform the Round Dance. Only cows can perform the Round D…

前端js 实现文件下载

https://www.zhangxinxu.com/wordpress/2017/07/js-text-string-download-as-html-json-file/ 侵删 1.H5 download属性 function downFile(content, filename) {// 创建隐藏的可下载链接var eleLink document.createElement(a);eleLink.download filename;eleLink.style.disp…

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

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

JDK8 lambda的会话指南–术语表

上次出现…我写了一篇与JDK8为我们提供的新方法有关的文章。 最令我兴奋的功能是lambda。 我必须承认&#xff0c;在即将成为浪子的第一年&#xff08;在此期间&#xff0c;我使用C&#xff03;开发了该产品&#xff09;&#xff0c;我喜欢LINQ和它可以做的漂亮&#xff0c;优雅…

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

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

php crypt mysql password_使用PHP 5.5的password_hash和password_verify函数

使用PHP 5.5的password_hash和password_verify函数假设我想为用户存储密码&#xff0c;这是使用PHP 5.5的password_hash()功能(或者这个版本的PHP 5.3.7&#xff1a;https&#xff1a;//github.com/ircmaxell/password_compat)的正确方法吗&#xff1f;$options array("c…

Mysql order by 导致 using filesorting

https://www.cnblogs.com/drcoding/p/4942277.html转载于:https://www.cnblogs.com/eason-d/p/9700526.html

angular 拼接html 事件无效

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

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

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

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

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

python 局域网 主机名_使用python获取连接到本地网络(基于主机名)的所有设备的ip...

这绝对不是重复的。在我正在做一个应用程序&#xff0c;我需要找到我的设备的IP地址。我知道他们的名字&#xff0c;通过他们的名字我需要得到他们的知识产权。Linux应该很简单&#xff0c;但我需要跨平台的态度&#xff0c;因此我使用python。在我已经知道解决方案&#xff1a…