ฉันสร้างผู้ใช้ด้วยuser@'%'
password 'password
แต่ฉันไม่สามารถเชื่อมต่อกับ:
mysql_connect('localhost:3306', 'user', 'password');
เมื่อฉันสร้างผู้ใช้user@'localhost'
ฉันก็สามารถเชื่อมต่อได้ ทำไม? ไม่ได้หมายความว่า '%' จากโฮสต์ใด ๆ
ฉันสร้างผู้ใช้ด้วยuser@'%'
password 'password
แต่ฉันไม่สามารถเชื่อมต่อกับ:
mysql_connect('localhost:3306', 'user', 'password');
เมื่อฉันสร้างผู้ใช้user@'localhost'
ฉันก็สามารถเชื่อมต่อได้ ทำไม? ไม่ได้หมายความว่า '%' จากโฮสต์ใด ๆ
คำตอบ:
ในการเชื่อมต่อจากระยะไกลคุณต้องมี MySQL ผูกพอร์ต 3306 กับที่อยู่ IP ของเครื่องใน my.cnf แล้วคุณจะต้องมีการสร้างผู้ใช้ทั้งในและ localhost '%' สัญลักษณ์แทนและให้สิทธิ์ในทุก DB ของดังกล่าว ดูด้านล่าง:
my.cnf (my.ini บน windows)
#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 เพื่ออนุญาตการเชื่อมต่อระยะไกล
mysql.default_port = <private instance port>
ใน php.ini ของฉันแล้วใช้127.0.0.1
ตลอดสำหรับชื่อโฮสต์ฐานข้อมูลของฉัน
ทำตามคำแนะนำ (ไม่จำเป็นต้องใช้ขั้นตอนที่ 1 ถึง 3 ใน windows):
ค้นหาการกำหนดค่า 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
กำหนดค่า (คุณสามารถตั้งค่าที่อยู่ผูกเป็นหนึ่งใน ips อินเตอร์เฟซของคุณหรือชอบฉันใช้ 0.0.0.0)
เริ่มบริการ mysql ใหม่บนคอนโซล:
service restart mysql
สร้างผู้ใช้ด้วยรหัสผ่านที่ปลอดภัยสำหรับการเชื่อมต่อระยะไกล ในการทำสิ่งนี้ให้เรียกใช้คำสั่งต่อไปนี้ใน mysql (หากคุณเป็นผู้ใช้ linux ในการเข้าถึง mysql console run 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 แสดงฉันยังมั่นใจว่าคุณต้องสร้างหรืออัปเดตผู้ใช้ มองหาผู้ใช้ mysql ทั้งหมดของคุณ:
SELECT user,password,host FROM user;
ทันทีที่คุณตั้งค่าผู้ใช้คุณควรจะสามารถเชื่อมต่อเช่นนี้:
mysql -h localhost -u gmeier -p
หวังว่ามันจะช่วย
code
mysql_connect ('localhost: 3306', 'user', 'password'); code