programing

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

testmans 2023. 8. 8. 20:08
반응형

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

나는 mysql 데이터베이스와 상호 작용하기 위해 php 웹페이지에서 사용하는 몇 가지 기능을 작성했습니다.서버에서 테스트할 때 다음 오류가 발생합니다.

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

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

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

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

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

편집: PHP 버전 5.3.3-7+squeeze1 mysql 버전: 5.1.49-3 모두 데비안에 있습니다.

나는 root 사용자 이름으로 로그인했습니다.

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';

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

quit;
mysql -u francesco -p -h localhost

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

source shop.sql;

그리고 그게..이제 php는 통화에 문제 없이 작동합니다.

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

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

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

저는 당신의 설명에 따라 이것이 문제라고 기꺼이 걸겠습니다.다른 PC에서 연결하는 경우 root@localhost와 다른 계정을 사용하고 명령줄은 root@127.0.0.1을 사용하여 연결합니다.

지금까지 말씀하신 바로는 PHP 5.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

저도 이런 문제가 있었어요.하지만 이것은 다른 이유 때문이었습니다.내 암호는 문자로 시작합니다.$...예.$MyPassword로 변경했습니다.#MyPassword그러면 문제가 해결됩니다.

만만하다.

메모장으로 xampp 제어판 -> 구성 -> my.ini 편집을 엽니다.이제 [mysqld] 아래에 이것을 추가합니다.

skip-grant-tables

저장. 아파치와 mysql을 시작합니다.

도움이 되길 바랍니다.

여기서?

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


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

루트에 암호가 없기 때문입니다.(using password: YES)"당신은 이 사용자와 비밀번호를 사용하고 있다"는 것입니다.

팁:

서버에 연결할 수 없는 경우 pid 및 소켓 파일을 코멘트아웃합니다.mysql이 잘못된 pid 및/또는 소켓 파일로 연결되어 있을 수 있으므로 서버 트로프에 연결하려고 할 때 잘못된 pid/sql 파일에 "연결"됩니다.

서버에 연결할 수 없는 경우 pid 및 소켓 파일을 코멘트아웃합니다.
#pid-file=/var/run/mysqld.pid#https=/var/lib/sshot/sshot.sshot

사용자를 제대로 식별하지 못할 가능성이 높습니다. root@localhost.MAMP가 사용 중인 Myslog 버전을 선택합니다.

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

저는 사실 컴퓨터에 가명을 써서 빈 디렉토리에 가는 방법을 기억할 필요가 없습니다.

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

이를 통해 다음을 실행할 수 있습니다.

mysqldumpMAMP -uroot -p db_name > test_db_dump.sql

별칭을 bash 프로파일에 저장할 수 있습니다.~/.bash_profile또는~/.bash_rc

암호가 설정되지 않았으며 암호를 인수로 전달하고 있을 수 있습니다.연결하는 동안 암호 인수를 생략해 보십시오.

PHPmyAdmin(WAMP)에 대한 권한을 편집합니다. 암호와 사용자 이름이 생성되지 않았습니다.따라서 php에서 SQL 연결과 함께 작동할 수 있도록 작성하거나 편집해야 합니다.효과가 있기를 바랍니다.

변수를 초기화하여 연결 개체에 사용해 보십시오.

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

언급URL : https://stackoverflow.com/questions/61557075/java-mariadb-connection-error-access-denied-for-user-rootlocalhost

반응형