[mysql] 원격 액세스를위한 MySQL 추가 사용자

로 사용자 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 단계가 필요하지 않음).

  1. 편집 할 mysql 구성을 찾으십시오.

    /etc/mysql/my.cnf(Mysql 5.5)

    /etc/mysql/conf.d/mysql.cnf(Mysql 5.6+)

  2. bind-address=127.0.0.1구성 파일 변경에서 찾기 bind-address=0.0.0.0(바인드 주소를 인터페이스 IP 중 하나로 설정하거나 0.0.0.0을 사용하는 것처럼)

  3. 콘솔에서 실행되는 mysql 서비스를 다시 시작하십시오.
    service restart mysql

  4. 원격 연결을위한 안전한 비밀번호로 사용자를 작성하십시오. 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

그것이 도움이되기를 바랍니다


답변