远程连接阿里云服务器的'本地'MySQL数据库

时间:2022-09-21 14:39:29

阿里云最近搞活动,学生价10块一个月,于是乎找研究僧同学买了半年玩玩。
正常情况下买了服务器之后还要买数据库,但是我只是用来做测试,所以没必要再买几十块一个月的买数据库。
服务器我买的是市场镜像并且已经装好了Ubuntu+MySQL+Apache+PHP环境,所以就想着和在本地开发一样,有了MySQL就没必要再单独买数据库。
OK,实现做一些声明吧:
1.我是用的是Mac的OS X EI Captian系统,版本:10.11.1
2.所有链接以及操作均在终端完成
3.鉴于一些原因,
服务器地址为:123.456.789.123
数据库密码为:databasePassword
实例名(也就是登陆远程服务器之后的系统名字):iZ28wfqwhqyZ

再啰嗦一下,远程登录数据库无非需要三个数据:数据库所在的IP,登陆数据库的账号,登录密码。
并且在登录前确定远程的数据库开启了远程连接。

下面粗略说说我从买完服务器到连接数据库成功的过程:
1.连接远程服务器:
这里我在终端用ssh连接,因为Mac系统自带了ssh服务,
在终端输入以下指令:

localhost:~ info$ ssh root@123.456.789.123

会显示:

root@123.456.789.123's password: 

熟悉Linux系统的朋友都知道,输密码是不会显示的,所以这里要输入你在买服务器时,设置的登录服务器的密码,输入完成之后会显示:

Welcome to aliyun Elastic Compute Service!

Last login: Fri Nov 27 13:40:57 2015 from 123.456.789.123
root@iZ28wfqwhqyZ:~#

2.获取MySQL的账号及密码
初次使用的时候,MySQL的密码放在/alidata/account.log里面
所以通过以下的指令去查看密码:

root@iZ28wfqwhqyZ:~# cd /alidata
root@iZ28wfqwhqyZ:/alidata# vim account.log
##########################################################################
#
# thank you for using aliyun virtual machine
#
##########################################################################

FTP:
account:与本次无关
password:与本次无关

MySQL:
account:root
password:databasePassword

记住这个账号密码,作为远程登录数据库的账号密码。
退出vim编辑器。

3.修改MySQL的远程连接权限

root@iZ28wfqwhqyZ:~# mysql -h 127.0.0.1 -u root -pdatabasePassword

输完这个你应该会看到:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 42
Server version: 5.5.37-log MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

这表示你进去了MySQL,注意看最后一行;

mysql>use mysql;   
mysql>update user set host = ’%’ where user = ’root’;

如果出现


ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'

说明已经存在host是%的了;

MySQL> select host from user where user = 'root'; 

显示:

+-----------------------+ 
| host |
+-----------------------+
| % |
| 127.0.0.1 |
| localhost.localdomain |
+-----------------------+
3 rows in set (0.00 sec)

继续输入:

MySQL>flush privileges; 

flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在”不重启MySQL服务”的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险–摘自百度知道–回答者:talorkitty

OK 此时已经修改了MySQL的远程连接权限,远程登录吧~