这件事情很不直观。我尝试说得好理解一点。
通常,mysql服务器安装在服务器上面。
你可能会有需求,特别是在开发阶段,你想直接通过自己的开发机器上面的客户端工具(如命令行mysql、Mac上的Sequel Pro、Windows的SQLyog等)进行访问,或者直接在开发机器上面跑代码访问数据库,这时候你发现并不能如愿,因为默认服务器上面的数据库服务器只允许本机访问。
你只能先远程登录服务器,再对Mysql进行访问。
下面我将介绍,如何配置数据库让我们直接在自己机器上访问。两件事情
- 确保服务器上面的防火墙没有挡住3306端口(Mysql默认使用3306端口)
- 在mysql中加入一个新的用户,给新用户访问权限设置为全局。
因为我的服务器没有设置防火墙去挡住3306端口,所以第一步我跳过了,直接进行第二步:
首先,你需要登录到服务器
ssh user_name@yourserver
user_name 替换成你的服务器用户名(比如root),yourserver替换成你的服务器IP地址,回车后输入密码即完成登录服务器
然后,在服务器上登录mysql
[root@yourserver]# mysql -u root -h localhost -p
登录成功后,会是这样子
mysql>
在mysql中有一个叫mysql的数据库中有一个user表,用于设置用户及访问权限的,可以通过下面的语句查询相关信息。
mysql> use mysql; mysql> select * from user;
下面我们用一个语句,往user表中加入一条我们想要的数据,来让我们实现远程访问:
mysql> GRANT ALL ON database_name.* TO databaseuser@'ip_address' IDENTIFIED BY 'password';
其中:
- database_name 你要访问的数据库名称
- databaseuser 新的数据库用户
- password 设置新的密码(mysql将会对你的设置进行加密再到user表中)
- ip_address 你本机的IP地址(使用%可以让所有的IP都可以访问)
将这几个字符串替换后,形成你自己的语句,执行。看看你的user表中是不是多了一条记录?
接下来你就可以用数据库客户端工具测试一下了,That’s all。
参考链接:
http://hubeihuyanwei.blog.163.com/blog/static/282052842011380210368/
https://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html
1、登录服务器,然后运行命令:mysql -u root –p ,然后输入密码,该步骤是进入数据库。
2、mysql>use mysql;
3、授权:
例如想root使用123456从任何主机连接到mysql服务器:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
如果想允许用户abc从ip为10.10.50.127的主机连接到mysql服务器,并使用654321作为密码:
mysql>GRANT ALL PRIVILEGES ON *.* TO 'abc'@'10.10.50.127' IDENTIFIED BY '654321' WITH GRANT OPTION;
4、刷新权限: mysql>FLUSH PRIVILEGES;