我用 password 'password创建了用户 user@'%'。但是我不能连接到:
password 'password
user@'%'
mysql_connect('localhost:3306', 'user', 'password');
当我创建用户 user@'localhost'时,我能够连接。为什么? “%”不是指来自任何主机吗?
user@'localhost'
对于什么数据库是用户? 看看这个例子
mysql> create database databasename; Query OK, 1 row affected (0.00 sec) mysql> grant all on databasename.* to cmsuser@localhost identified by 'password'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
因此返回给您的问题“%”操作符意味着您的网络中的所有计算机。
像 aspesa 显示,我也确信你必须创建或更新一个用户。查找所有 mysql 用户:
SELECT user,password,host FROM user;
一旦你建立了你的用户,你应该能够像这样连接:
mysql -h localhost -u cmsuser -p
希望能有所帮助
为了远程连接,必须让 MySQL 将端口3306绑定到 my.cnf 中计算机的 IP 地址。然后,您必须在 localhost 和“%”通配符中创建用户,并授予所有数据库(如 .)的权限:
Cnf (窗口上的 my.ini)
#Replace xxx with your IP Address bind-address = xxx.xxx.xxx.xxx
然后:
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass'; CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
GRANT ALL ON *.* TO 'myuser'@'localhost'; GRANT ALL ON *.* TO 'myuser'@'%'; FLUSH PRIVILEGES;
根据操作系统的不同,您可能必须打开端口3306以允许远程连接。
遵循说明(在 Windows 中不需要步骤1到3) :
/etc/Mysql/my.cnf (Mysql 5.5)
Etc/Mysql/Conf.d/Mysql.cnf (Mysql 5.6 +)
在配置文件更改 bind-address=0.0.0.0中查找 bind-address=127.0.0.1(您可以将绑定地址设置为接口 IP 之一,或者像我一样使用0.0.0.0)
bind-address=0.0.0.0
bind-address=127.0.0.1
重新启动在控制台上运行的 mysql 服务: service mysql restart
service mysql restart
为远程连接创建具有安全密码的用户。要在 mysql 中执行以下命令(如果您是 linux 用户,要到达 mysql 控制台,请运行 mysql,如果您为 root 用户设置密码,请运行 mysql -p) :
mysql
mysql -p
GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'safe_password' WITH GRANT OPTION;
现在您应该有一个名称为 user的用户和具有远程连接能力的密码为 safe_password的用户。
user
safe_password
另一种方法是使用 MySqlWorkbench。 进入管理-> 用户和特权-> 并在“限制主机匹配”(来自主机)属性中将“ localhost”中的“%”改为“您想给予远程访问的用户”,或者在该属性中用“%”代替 localhost 创建新用户(添加帐户按钮)。
我使用了一个已经有密码的用户,该用户使用 mysql _ navtive _ password
CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';
而不是
CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED BY 'password';
删除一个旧的并创建一个没有 mysql _ national _ password 的新的就可以了