我已经在我的本地机器上安装了MySQL Community Edition 5.5,我想允许远程连接,这样我就可以从外部源连接。
我该怎么做呢?
我已经在我的本地机器上安装了MySQL Community Edition 5.5,我想允许远程连接,这样我就可以从外部源连接。
我该怎么做呢?
当前回答
对于OS X用户,请注意bind-address参数通常是在launchd plist中设置的,而不是在my.ini文件中。所以在我的情况下,我删除了<string>——bind-address=127.0.0.1</string>从/Library/LaunchDaemons/homebrew.mx .mariadb.plist。
其他回答
MySQL 8不再允许您使用GRANT命令创建用户。您需要首先创建用户。
CREATE USER 'root'@'%' IDENTIFIED BY 'PASSWORD';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
当我在一个Java项目中使用MySQL服务器作为数据库时,我遇到了这个挑战。
我是这样做的:
首先,确认您的MySQL服务器配置允许远程连接。使用您喜欢的文本编辑器打开MySQL服务器配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
向下滚动到绑定地址行,并确保它要么被注释掉,要么被替换为0.0.0.0(以允许所有远程连接),要么被替换为您想要远程连接的ip -address。
完成必要的更改后,保存并退出配置文件。通过重新启动MySQL服务,应用MySQL配置文件所做的更改:
sudo systemctl restart mysql
接下来,登录到已安装的服务器上的MySQL服务器控制台:
mysql -u root -p
输入mysql用户密码
检查您想要的用户已经访问的主机。在我的例子中,用户是root:
SELECT host FROM mysql.user WHERE user = "root";
这给了我这样的输出:
+-----------+
| host |
+-----------+
| localhost |
+-----------+
接下来,我运行下面的命令,授予root用户对名为my_database的数据库的远程访问权限:
USE my_database;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my-password';
注意:%授予用户从网络上的所有主机进行远程访问。您可以使用命令grant ALL PRIVILEGES ON *指定要授予用户访问权限的单个主机的Ip-Address。*“root”@“ip地址”IDENTIFIED BY“my-password”;
之后,我检查了用户现在已经访问的主机。在我的例子中,用户是root:
SELECT host FROM mysql.user WHERE user = "root";
这给了我这样的输出:
+-----------+
| host |
+-----------+
| % |
| localhost |
+-----------+
最后,您可以尝试从另一个服务器使用命令连接到MySQL服务器:
mysql -u username -h mysql-server-ip-address -p
其中u代表用户,h代表mysql-server-ip-address, p代表密码。所以我的情况是:
mysql -u root -h 34.69.261.158 -p
输入mysql用户密码
根据你的MySQL服务器版本,你应该得到这个输出:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, 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服务器进程正在监听127.0.0.1或::1,那么您将无法远程连接。如果您在/etc/my.cnf中设置了绑定地址,这可能是问题的根源。
您还必须为非本地主机用户添加特权。
这在MySQL上是默认允许的。
默认情况下禁用的是远程根访问。如果你想启用它,在本地运行这个SQL命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
然后找到下面的行,并在my.cnf文件中注释它,该文件通常位于Unix/OSX系统的/etc/mysql/my.cnf中。在某些情况下,文件的位置是/etc/mysql/mysql.conf.d/mysqld.cnf)。
如果是Windows系统,你可以在MySQL安装目录中找到它,通常是C:\Program Files\MySQL\MySQL Server 5.5\,文件名是my.ini。
改变行
bind-address = 127.0.0.1
to
#bind-address = 127.0.0.1
并重新启动MySQL服务器(Unix/OSX和Windows)以使更改生效。
远程登录的所有流程。默认关闭远程登录。你需要手动打开所有ip..来访问所有ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
特定的Ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
然后
flush privileges;
您可以检查您的用户主机和密码
SELECT host,user,authentication_string FROM mysql.user;
现在你的责任就是改变这一切
bind-address = 127.0.0.1
你可以找到这个
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
如果你在那里找不到这个,那就试试这个
sudo nano /etc/mysql/my.cnf
在此评论
#bind-address = 127.0.0.1
然后重新启动Mysql
sudo service mysql restart
现在享受远程登录