MySQL 5.7.13远程安装指南(Windows server 2012 R2)
- 前言
- 安装MySQL 5.7.13
- 解压建议
- 创建.ini文件
- 安装MySQL服务
- 配置MySQL 5.7.13
- 创建任意IP远程登陆root用户(服务器)
- 建立Path(服务器)
- 设置防火墙3306规则(服务器)
- 检查阿里云服务器开放端口(控制台)
- Navicat Premium 12远程连接数据库(客户层)
- 总结
前言
博主是个小萌新,在读物联网专业,这些天因为疫情在家无聊透顶,想着试着做一下以前没有做到的,用Java程序连接服务器上的数据库(以前做过但是是localhost的,而且因为是课设又没接触过数据库所以半星期赶着学了MySQL)。
这几天就试着完成之前没能做到的事情,先说说情况吧:
首先假设外网IP: 本机(我的笔记本):192.168.1.1 服务器:101.101.0.1
第一天:下载安装了MySQL8+版本,结果一大堆新的验证方式和格式不熟悉,但勉强能够localhsot连接了,试着用本机连接服务器的MySQL,报错,摸索了一番,度娘进行操作,跟第二天一样。
第二天:修改了各种设置,包括升级了用户权限,关闭了防火墙,甚至连本机的防火墙都关了,3306规则也设置了,360防护也关了,但愣是无法远程连接(我起初以为是MySQL8+有什么重要改变了),而且,本机Ping 101.101.0.1是通的,telnet 101.101.0.1没有试,因为本机的系统好像Telnet服务有问题,一天就这么被耗没了。
第三天:在VMware上面安装了WinXP,em……因为XP的Telnet服务好用些,于是Telnet 101.101.0.1 3306,结果失败。度娘也救了我几天,救不了。本来打算重置服务器实例的,突然想到,是不是服务器本身就有端口入口没打开,后来一查控制台,果真如此。阿里云的服务器ECS默认不开放3306……一波操作后,本机能访问服务器的MySQL了(当然是用Navicat Premium 12)。 于是我试着开始写Java程序,包括使用JDBC来试着访问服务器的数据库,理所当然的失败了,具体原因我还得再摸索,但MySQL8+确实不适合我,于是就换回了以前使用的MySQL5.7.13,于是就有了本文。
安装MySQL 5.7.13
本操作都是在服务器上进行 官网直达:MySQL Community Server 进入后点击 Archives 选择 5.7.13 的64位 ZIP 版本 或者直接点击下面这个下载链接,当然也是官网的直接下载(如果这个链接没失效的话)
解压建议
- 因为是服务器,所以放在最方便的位置就好了;
- 又因为需要经常折腾,改名字简单点就好了;
- 于是就得到如下文件夹:C:\mysql5713
创建.ini文件
在C:\mysql5713\bin 目录外,也就是C:\mysql5713 新建一个my.ini的文件,并把它原先的 my-default.ini 删掉或者 .txt 化。
my.ini内容如下: 该部分安装参考 菜鸟教程MySQL版块
[client]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=C:\\mysql5713
# 设置 mysql数据库的数据的存放目录
datadir=C:\\mysql5713\\data
# 允许最大连接数
max_connections=100
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
安装MySQL服务
- 在bin目录下,对着空白处按下 Shift+鼠标右键 打开命令行(或者 Win+R输入 cmd 然后 cd C:\mysql5713\bin)
- CMDmysqld --initialize --console GET2020-02-02T08:41:14.514016Z 1 [Note] A temporary password is generated for root@localhost: /8Xjr?k:9Pkn 后面加粗的部分 /8Xjr?k:9Pkn 就是root初始密码
- CMDmysqld install GETService successfully installed.
- CMDnet start mysql GETMySQL 服务正在启动 . MySQL 服务已经启动成功。
- CMDmysql -u root -p GETEnter password:
- CMD************ (就是刚刚上面获得的密码) GETWelcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.13…Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.……………mysql>
某些人可能会遇到这样的情况:输入完密码,回车ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 挺好……因为我第二次重新安装就发现遇到了这个坑:第一,不要怀疑,我的密码大小写正确;第二,我试过某些方法,比如在my.ini的[mysqld]下一行添加skip-grant-tables再尝试,嗯可以进去,但是设置不了密码,叽里呱啦……反正就是这方法也不得,如果你们有其他的问题,可以参见这个博客在MySQL登录时出现Access denied for user 'r…… 很明显,我失败了。卸载那是不可能的,这方法是ZIP安装,万一弄到注册表一个个删除,我可不干,直接说方法吧。 ① 进入bin目录的cmd,执行net stop mysql; ② 动动手指,把mysql5713目录下的data删了; ③ 在cmd输入mysqld.exe remove,移除服务成功; ④ 重新安装,跟第一步一样,mysqld --initialize --console,于是又得到了一个密码**********; ⑤ 再次mysql -u root -p输入得到的这个新的密码**********,可以进去。如果你的还不行,再多试两次,不要超过三次,毕竟事不过三。
- 修改密码,激活用户mysql> set password = '12345678';Query OK, 0 rows affected (0.01 sec)mysql> alter user 'root'@'localhost' password expire never;Query OK, 0 rows affected (0.00 sec)mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)这样,下次你使用root登陆就是使用新的密码12345678了
配置MySQL 5.7.13
本操作可能是在服务器上或者阿里云控制台进行
创建任意IP远程登陆root用户(服务器)
- 创建新的root任意IP可访问的用户,注意,原先的localhost并没有去掉(我也不知道为啥,但就是用户列表有它,这不重要,重要的是原先的root已经被替换掉了)mysql> create user 'root'@'%' identified by '12345678'; Query OK, 0 rows affected (0.01 sec)
- 授予该root权限mysql> grant all privileges on *.* to 'root'@'%' with grant option;Query OK, 0 rows affected (0.00 sec)
建立Path(服务器)
右键 这台电脑 → 高级系统设置 → 环境变量 → 找到系统变量的 Path 编辑 末尾添加 ;C:\mysql5713\bin 这样一来,就可以直接通过cmd访问MySQL了,虽然这在服务器上好像用处不大(我猜的,因为我用的是可视化数据库管理)
设置防火墙3306规则(服务器)
- 打开系统防火墙设置;
- 点击左侧的高级设置;
- 右击入站规则 → 新建规则 → 端口 → TCP/特定端口3306 → 允许连接 → 域/专用/公用 都✔勾上 → 名称任意 → 确定;
检查阿里云服务器开放端口(控制台)
我之前就是死在这个坑的,必须提一下
进入阿里云服务器管理控制台,找到你的实例所在的安全组(看图左上角,我的服务器是在张家口)具体入口可以自己摸索。
然后点击 配置规则
点击右上角 快速创建规则 ,然后如下图填写确定
到此该部分结束,算是大功告成了,下一步试着连接,等等,别忘了,在控制台重启你的服务器实例
Navicat Premium 12远程连接数据库(客户层)
这时基本也就弄好了,那我们就验证一下,在我的笔记本电脑上打开Navicat Premium,新建连接,照着服务器公网IP填写,端口3306,填写%的root(非localhost root)和密码
,测试连接,成功。
如果一个阿里云ECS从创建镜像一直安装到这步,没有改动其他的设置,是无法Ping 的,除非在系统防火墙那新加一个规则,这里就不细说了,度娘走起,另外也无法使用telnet,去控制台配置,也不多说了,但最最最重要的,数据库连接上了,是吧,这才是本文的目的
总结
要想远程任意IP对服务器实例的MySQL数据库进行访问,最好做到如下几点:
- 安装MySQL,填写配置文件 .ini,网上有些是连接本地的或者固定IP的才填写127.0.0.1之类的,不要照搬;
- 创建新的用户,这个用户是%级别,也就是任意IP可访问,并给予这用户足够的权限,在MySQL8+中,要想远程访问还需要开启允许远程访问,也就是grant all privileges on *.* to 'root'@'%' identified by '12345678' with grant option;一下,具体是啥一时间忘了,现在是5.7.13就不理这个了;
- 打开服务器系统防火墙的3306端口;
- 检查服务器控制台是不是允许了3306端口入内,如果没有就给安全组添加新的规则,让任意IP可访问3306端口。
做到以上4步,应该是基本可以远程连接数据库的了。