首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何允许远程mysql登录?

如何允许远程mysql登录?
EN

Stack Overflow用户
提问于 2017-02-23 17:43:19
回答 2查看 811关注 0票数 1

我有一个简单的迷途多机配置:

代码语言:javascript
复制
Vagrant.configure(2) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.provision :shell, path: "vagrant/ubuntu-16.04/provision.sh"
  config.vm.synced_folder "ed", "/var/www/html"
  config.vm.provider "virtualbox" do |v|
    v.memory = 1024
    v.cpus = 2
  end
  config.vm.define "node1", primary: true do |node|
    node.vm.hostname = 'node1'
    node.vm.network :private_network, ip: "192.168.56.101"
    node.vm.network :forwarded_port, guest: 22, host: 10122, id: "ssh"
    node.vm.provision :hosts, :sync_hosts => true
  end
  config.vm.define "node2" do |node|
    node.vm.hostname = "node2"
    node.vm.network :private_network, ip: "192.168.56.102"
    node.vm.network :forwarded_port, guest: 22, host: 10123, id: "ssh"
    node.vm.provision :hosts, :sync_hosts => true
  end
end

node1上我有php,在node2上我有mysql。

当我从mysql -uuser -ppass -P3306 -hlocalhost运行vagrant@node2时,

但是,当我尝试从mysql -uuser -ppass -P3306 -h192.168.56.102运行vagrant@node1时,它将无法工作,我会得到错误:

错误2003 (HY000):无法连接到'192.168.56.102‘(111)上的MySQL服务器

我可以从node1中选择node2,反之亦然。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-24 13:51:53

在mysql中,默认禁用远程用户登录。它只允许本地主机出于安全原因。

为了进行交叉验证,登录到mysql并运行命令:

代码语言:javascript
复制
mysql> select user,host from mysql.user;
+------+--------------------------------+
| user | host                           |
+------+--------------------------------+
| root | localhost                      | 
| root | ::1                            |
+------+--------------------------------+
2 rows in set (0.00 sec)

如果它只给localhost。这意味着您只允许从localhost和用户以root身份登录(在本例中)。

如果您希望允许从远程系统登录,则必须添加以下内容:

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

此命令将允许从所有远程IP登录,并允许访问所有数据库的用户名user

如果希望允许从特定IP地址访问并且只允许访问特定的数据库,则可以运行以下方式:

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON databasename.* TO 'user'@'ipaddress' IDENTIFIED BY 'password' WITH GRANT OPTION;

注:不要忘记在/etc/mysql/my.cnf中更改bind-address

打开文件/etc/mysql/my.cnf并将bind-address127.0.0.1更改为0.0.0.0或注释掉bind-address并重新启动mysql服务。

票数 4
EN

Stack Overflow用户

发布于 2017-02-23 17:51:05

如果防火墙阻塞了MySQL端口(默认为3306),就会发生这种情况。

另一个可能的原因是bind_address配置文件中的MySQL设置。默认情况下,这将设置为127.0.0.1。将其设置为0.0.0.0以启用所有IP地址的MySQL。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42422715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档