"연결 실패: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
'programing' 카테고리의 다른 글
선 세그먼트의 다른 두 점 사이에 점이 있는지 어떻게 확인할 수 있습니까? (0) | 2023.08.13 |
---|---|
html select 요소의 선택된 옵션 값을 검색하고 설정하기 위한 jQuery (0) | 2023.08.08 |
'NoneType' 개체란 무엇입니까? (0) | 2023.08.08 |
angular2에서 data-* 속성에 바인딩하는 방법은 무엇입니까? (0) | 2023.08.08 |
공급자가 Oracle을 사용할 때 Oracle 클라이언트 버전 오류와 호환되지 않습니다.데이터 클라이언트 (0) | 2023.08.08 |