로 사용자 user@'%'
를 만들었습니다 password 'password
. 그러나 나는 연결할 수 없습니다 :
mysql_connect('localhost:3306', 'user', 'password');
user를 만들었을 때 user@'localhost'
연결할 수있었습니다. 왜? ‘%’는 (는) 모든 호스트의 의미가 아닙니까?
답변
원격으로 연결하려면 my.cnf의 머신 IP 주소에 MySQL 바인드 포트 3306이 있어야합니다. 그런 다음 localhost 및 ‘%’와일드 카드에서 사용자를 작성하고 모든 DB에 대한 권한을 부여해야합니다 . 아래를보십시오 :
my.cnf (Windows의 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;
OS에 따라 원격 연결을 허용하기 위해 포트 3306을 열어야 할 수도 있습니다.
답변
지침을 따르십시오 (Windows에서는 1 ~ 3 단계가 필요하지 않음).
-
편집 할 mysql 구성을 찾으십시오.
/etc/mysql/my.cnf(Mysql 5.5)
/etc/mysql/conf.d/mysql.cnf(Mysql 5.6+)
-
bind-address=127.0.0.1
구성 파일 변경에서 찾기bind-address=0.0.0.0
(바인드 주소를 인터페이스 IP 중 하나로 설정하거나 0.0.0.0을 사용하는 것처럼) -
콘솔에서 실행되는 mysql 서비스를 다시 시작하십시오.
service restart mysql
-
원격 연결을위한 안전한 비밀번호로 사용자를 작성하십시오. mysql에서 다음 명령을 실행하려면 (Linux 사용자가 mysql 콘솔 실행에 도달
mysql
하고 root run에 암호를 설정 한 경우mysql -p
) :GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'safe_password' WITH GRANT OPTION;`
이제 원격 연결 기능을 가진 이름 user
과 비밀번호를 safe_password
가진 사용자가 있어야 합니다.
답변
어떤 DB 사용자입니까? 이 예를 봐
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 shows와 같이 사용자를 생성하거나 업데이트해야합니다. 모든 MySQL 사용자를 찾으십시오.
SELECT user,password,host FROM user;
사용자를 설정하자마자 다음과 같이 연결할 수 있어야합니다.
mysql -h localhost -u gmeier -p
그것이 도움이되기를 바랍니다