IT Share you

"연결 실패 : 사용자 'root'@ 'localhost'에 대한 액세스가 거부되었습니다 (암호 사용 : YES)"PHP 함수에서

shareyou 2021. 1. 7. 19:57
반응형

"연결 실패 : 사용자 'root'@ 'localhost'에 대한 액세스가 거부되었습니다 (암호 사용 : YES)"PHP 함수에서


mysql 데이터베이스와 상호 작용하기 위해 PHP 웹 페이지에서 사용하는 일부 함수를 작성했습니다. 내 서버에서 테스트 할 때이 오류가 발생합니다.

"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)" 

내 PC (XAMPP 사용)에서 사용할 수 있으며 서버의 명령 줄을 사용하여 데이터베이스 테이블을 탐색 할 수 있습니다. 그러나 웹 페이지가 연결되지 않습니다. 비밀번호를 확인했지만 결과가 없습니다. 맞습니다 (그렇지 않으면 명령 줄에서 mysql에 로그인 할 수 없습니다).

함수 호출은 다음과 같습니다.

$conn = new mysqli("localhost", "root", "password", "shop");

내 서버에 무언가를 설정해야합니까? 감사

편집 : PHP 버전 5.3.3-7 + squeeze1 mysql 버전 : 5.1.49-3 모두 데비안


이 방법으로 해결했습니다. 루트 사용자 이름으로 로그인했습니다.

mysql -u root -p -h localhost

새 사용자를 만들었습니다.

CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';

그런 다음 데이터베이스를 만들었습니다.

CREATE DATABASE shop;

이 데이터베이스의 새 사용자에게 권한을 부여했습니다.

GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';

그런 다음 루트에서 로그 아웃하고 새 사용자로 로그인했습니다.

quit;
mysql -u francesco -p -h localhost

스크립트를 사용하여 데이터베이스를 다시 작성했습니다.

source shop.sql;

그게 다야 .. 이제 PHP에서 호출 문제없이 작동합니다.

 $conn = new mysqli("localhost", "francesco", "some_pass", "shop");

시간 내 주셔서 감사합니다 :)


root @ localhost에 대한 사용자 계정 항목이 DB에 있습니까? MySQL에서는 호스트별로 다른 사용자 계정 권한을 설정할 수 있습니다. 연결중인 호스트와 결합 된 동일한 이름을 가진 여러 계정이있을 수 있습니다. 가장 일반적인 것은 root@127.0.0.1 및 root @ localhost입니다. 이들은 다른 암호와 권한을 가질 수 있습니다. root @ localhost가 존재하고 예상 한 설정이 있는지 확인하십시오.

귀하의 설명에 따라 이것이 문제라고 확신합니다. 다른 PC에서 연결은 root @ localhost와 다른 계정을 사용하며 root@127.0.0.1을 사용하여 연결하는 명령 줄이 있습니다.


지금까지 말씀 드린 바에 따르면 PHP5.3의 MySQL 드라이버가 이전 MySQL 버전 4.1에 연결하는 데 문제가있는 문제처럼 들립니다. http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authentication.aspx 에서 살펴보십시오 .

유용한 답변이있는 비슷한 질문이 있습니다. 오래된 인증을 사용하여 MySQL 4.1+에 연결할 수 없습니다.

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user

이렇게하면 이전 암호가있는 계정의 경우 16이 반환되고 새 암호가있는 계정의 경우 41이 반환됩니다 (암호가없는 계정의 경우 0도 반환됩니다). MySQL 프런트 엔드 (있는 경우)의 사용자 관리 도구를 사용하거나

SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges

여기에?

코드는 다음과 같아야한다고 생각합니다.


$connect = new mysqli("host", "root", "", "dbname");

루트에는 암호가 없기 때문입니다. (using password: YES)"이 사용자와 암호를 사용하고"말하고


나도이 문제가 있었다. 그러나 이것은 또 다른 이유 때문이었습니다. 내 비밀번호는 문자로 시작했습니다 $. 예를 들어로 $MyPassword변경 #MyPassword하여 문제가 해결되었습니다.


Edit your privileges on PHPmyAdmin (WAMP), Note that your password and user name has not been created. So do create or edit it, that it might work with your sql connection in your php. Hope it works


TIP:

comment out pid and socket file, if you can't connect to server.. mysql could be connecting with incorrect pid and/or socket file, so when you try to connect to server trough command-line it "looks" at the incorrect pid/socket file...

### comment out pid and socket file, if you can't connect to server..
#pid-file=/var/run/mysql/mysqld.pid #socket=/var/lib/mysql/mysql.sock

Most likely it is not identifying your user properly. root@localhost. Select the Mysql version your MAMP is using.

/Applications/MAMP/Library/bin/mysqldump -uroot -p db_name > test_db_dump.sql

I actually wrote an alias on my computer so I don't have to remember how to get to the bin directory.

alias mysqldumpMAMP='/Applications/MAMP/Library/bin/mysqldump'

Which allows me to run this:

mysqldumpMAMP -uroot -p db_name > test_db_dump.sql

You can save an alias in your bash profile ~/.bash_profile or ~/.bash_rc


Easy.

open xampp control panel -> Config -> my.ini edit with notepad. now add this below [mysqld]

skip-grant-tables

Save. Start apache and mysql.

I hope help you


May be there password is not set and you are passing password as argument. Try ommitting password argument during connection..


Try initializing your variables and use them in your connection object:

$username ="root";
$password = "password";
$host = "localhost";
$table = "shop";
$conn = new mysqli("$host", "$username", "$password", "$table");

ReferenceURL : https://stackoverflow.com/questions/6445917/connect-failed-access-denied-for-user-rootlocalhost-using-password-yes

반응형