今天在阿里云 Windows 服务器上配置 MySQL 环境, 踩了一些坑, 分享出来. 需要的朋友可以看看. 额, 或许有人要吐槽我为什么不在 Linux 上去配置, 额, 因为我 Windows 的那台服务器配置相对高些. 本人技术方面偏向于. net, 现在接触 PHP 项目所以搭建 LAMP 环境. 只不过我的数据库放在 Windows 上的这台服务器.
言归正传
先选择版本, 到 MySQL 官方网站下载, 你会发现各宗版本看得眼花缭乱的, 不要惊慌先选择 MySQL Community Edition 版, 然后再跳转的页面下, 你会发现还会有很多子版本要选, 英文要不好的同学, 选择上会有点吃力, 可选子版本有两个:
(1) 先说 一个是最省事的版本 , 直接下一步下一步安装就好, 有点像 sqlserver 纯界面展示. https://dev.MySQL.com/downloads/installer/ , 配置比较高的服务器, 或懒得去搞一堆命令行的朋友可以直接下载这个. 看完这里可以直接省略下面的内容了.
(2) 第二个版本, MySQL Community Server 版本. 这个版本比较适合服务器安装. 占用资源较小. 部署也比较灵活. 缺点如果不熟悉的话坑会比较多.
我们先快速的说下 安装的步骤, 先下载文件, 解压缩到目标文件夹位置. 比如 D:/MySQL .
1, 在 MySQL 文件夹 下新建一个文件名为 my.INI , 然后录入信息如下
- [MySQL]
- # 设置 MySQL 客户端默认字符集
- default-character-set=utf8
- [mysqld]
- # 设置 3306 端口
- port = 3306
- # 设置 MySQL 的安装目录
- basedir=D:/MySQL
- # 设置 MySQL 数据库的数据的存放目录
- datadir=D:/MySQL/data
- # 允许最大连接数
- max_connections=500
- # 服务端使用的字符集默认为 8 比特编码的 latin1 字符集
- character-set-server=utf8
- # 创建新表时将使用的默认存储引擎
- default-storage-engine=INNODB
2, 这个时候打开 CMD(记得以管理员身份运行), 否则输入命令时会出现 install/remove of the service denied 错误, 进入 MySQL 文件夹. cd d:/MySQL/bin(如果不想每次都 cd 进到这个目录, 可以将该路径添加到 path 路径下)
录中输入命令 mysqld install
2 显示成功之后再输入 mysqld --initialize 此时无任何提示 (电脑卡就等一会)
3 再输入: net start MySQL 显示: 服务正在启动... 服务已经启动启动成功!
----------------------------------------------------------------------------------------------------
好!! 接着我来说说我遇到的坑
问题 1: 安装 MySQL 服务时提示 " 找不到 msvcp140.dll?
我服务器的版本是 Windows server 2012 r2 版本的. 刚开始输入命令行的时候报这个错. 是因为缺少这个补丁 Microsoft Visual C++ 2015 Redistributable Update 3
下载地址 https://www.microsoft.com/en-us/download/details.aspx?id=53587
问题 2: 安装好服务后, 有的时候运气好, 默认初始版本密码是空的. 但有的时候密码为空是登陆不进去的. 好问题来了,
- D:\MySQL\bin>MySQL -uroot -p
- Enter password:
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
密码为空 , 登陆不进去, 很是烦躁一万只草泥马路过, 看了很多帖子, 都是处理 mysql5.11 的 现在 8.0 处理不了. 接着找办法
这个时候需要 关闭 sql 服务, 在控制面板里面的服务, 找到 MySQL 关掉. 也可以用命令行 net stop MySQL 是关闭 MySQL 服务
在服务器上用以下方式跳过登陆, 进入 MySQL, 在 cmd 中安装一下方式操作 mysqld --console --skip-grant-tables --shared-memory
- D:\MySQL\bin>mysqld --console --skip-grant-tables --shared-memory
- 2018-10-05T16:22:02.055800Z 0 [System] [MY-010116] [Server] D:\MySQL\bin\mysqld.exe (mysqld 8.0.12) starting as process 9440
- 2018-10-05T16:22:06.832563Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
- 2018-10-05T16:22:06.914520Z 0 [System] [MY-010931] [Server] D:\MySQL\bin\mysqld.exe: ready for connections. Version: '8.0.12' socket: '' port: 0 MySQL Community Server - GPL.
- 2018-10-05T16:22:06.977960Z 0 [Warning] [MY-011311] [Server] Plugin mysqlx reported: 'All I/O interfaces are disabled, X Protocol won't be accessible'
- 2018-10-05T16:22:12.006067Z 0 [System] [MY-013105] [Server] D:\MySQL\bin\mysqld.exe: Normal shutdown.
- D:\MySQL\bin>2018-10-05T16:22:13.198096Z 0 [System] [MY-010910] [Server] D:\MySQL\bin\mysqld.exe: Shutdown complete (mysqld 8.0.12) MySQL Community Server - GPL.
此时, 重新打开一个 CMD 窗口 , 之前的窗口保留着不要关闭!. 按如下步骤操作
- MySQL -u root; # 这里切记不要 加 -p. 要不会强制要你输入密码才能登陆
- update user set authentication_string=''where user='root'; # 此时密码一定要留空! 数据库里面的密码默认是加密过的, 以前的 password(123) 函数在 8.0 版本后就不能用了.
- flush privileges; (不提交不生效)
现在 root 帐户终于有了初始密码, 此时密码为空!!, 也只能为空!! 否则你会登陆不进去的 , 存储进去会像 md5 一样加密过的字符串在表里.
问题 3 , 如何修改 root 密码
alter user 'root'@'%' identified by '123';
或
alter user 'root'@'localhost' identified by '123';
或
退出 quit; 打开 cmd , 进入 MySQL 安装目录 / bin
mysqladmin -uroot -p password 123
此时, 基本上解决 了 MySQL 的服务端的问题了, 现在我们把焦点移动到客户端. 假设现在的场景服务端和客户端不在同一台机子上. 我们需要安装下客户端的工具
推荐两个工具 第一个是 MySQL 的 MySQL Workbench https://dev.MySQL.com/downloads/workbench/
第二个是 Navicat Premium 12 工具, 破解版就自己去找啦. 相对 这个工具可以帮你剩下很多事, 比如对命令行比较不在行的同学可以选下的这个版本
问题 4 , 无法远程登陆访问远程服务器上面的 MySQL
就是用上面两个客户端工具 , 都无法登陆服务器, 因为默认 MySQL 是不让客户端远程登陆的, 这个时候 第一步需要检查阿里云服务器的安全组策略, 添加 3306 端口的入口,
第二步, 回到服务器 , 进入 cmd , 将原先表中的数据 localhost 改成 '%' , 也可以改成 指定的 ip 地址 如 '192.168.0.0,192.168.0.1,192.168.0.2'
- MySQL -u root -pvmwaremysql>use MySQL;
- MySQL>update user set host = '%' where user = 'root';
- MySQL>select user, authentication_string from user;
修改好后, 这时 ,MySQL Workbench https://dev.MySQL.com/downloads/workbench/ , 你会发现可以登陆进去了. 但是 Navicat Premium , 会报出 "客户端连接 caching-sha2-password 问题" 这个是由于 MySQL 不太愿意让第三方工具接入客户端查询,
在密码反编译的时候故意没有对接好. 接着我们来处理最后一个问题.
问题 5 : Navicat Premium 客户端连接 caching-sha2-password 问题
- ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码
- FLUSH PRIVILEGES; #刷新权限
注意了! 如果你在问题 4 中已经把 localhost 改成 % 的 , 上面的语句 也要跟着改 比如:'root'@'%', 如果是跟着 ip 的 也以此类推!
再重置下密码: alter user 'root'@'localhost' identified by '123qwe';
最后 基本上常见的坑就踩完了, 写的有点粗糙, 熬夜分销的一点心得, 大家凑乎这看吧.
来源: https://www.cnblogs.com/jackmary/p/9746454.html