"접속 실패:php 함수의 'root'@'localhost' 사용자(암호: YES 사용)에 대한 액세스가 거부되었습니다.
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-7+squeeze1 mysql 버전: 5.1.49-3 (debian 모두)
다음과 같이 해결했습니다.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;
그리고 그게 다야..이제 from 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.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
저도 이런 문제가 있었어요.하지만 이것은 다른 이유 때문이었다.비밀번호가 문자로 시작되었습니다.$
...예.$MyPassword
로 변경했습니다.#MyPassword
그러면 문제가 해결됩니다.
만만하다.
xampp 제어판을 엽니다.-> 설정 -> my.ini 편집을 메모장으로 엽니다.[mysqld] 아래에 추가합니다.
skip-grant-tables
저장 아파치와 mysql을 시작합니다
도움이 되었으면 좋겠다
여기서요?
암호는 다음과 같아야 합니다.
$connect = new mysqli("host", "root", "", "dbname");
루트에는 패스워드가 없기 때문입니다.그(using password: YES)
"이 사용자에게 비밀번호를 사용하고 있습니다"라고 표시됩니다.
힌트:
서버에 접속할 수 없는 경우 pid 및 소켓파일을 코멘트 아웃합니다.mysql은 잘못된 pid 및/또는 소켓파일로 연결되어 있을 수 있습니다.따라서 server trop 명령줄에 접속하려고 하면 잘못된 pid/socket 파일로 "연결"됩니다.
## 서버에 접속할 수 없는 경우 pid 및 소켓파일을 코멘트 아웃 합니다.
#pid-file=/var/run/mysqld.pid#syslog=/var/lib/syslog/syslog.syslogs
사용자를 올바르게 식별하지 못할 수 있습니다.root@localhostMAMP에서 사용하고 있는Mysql 버전을 선택합니다.
/Applications/MAMP/Library/bin/mysqldump -uroot -p db_name > test_db_dump.sql
사실 컴퓨터에 가명을 썼기 때문에 bin 디렉토리로 가는 방법을 기억할 필요가 없습니다.
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/6445917/connect-failed-access-denied-for-user-rootlocalhost-using-password-yes
'source' 카테고리의 다른 글
항상 range()보다 xrange()를 선호합니까? (0) | 2023.02.06 |
---|---|
MySQL에 Python datetime.datetime 개체 삽입 (0) | 2023.02.06 |
ubuntu 12.04의 nodejs 대 노드 (0) | 2023.02.06 |
CASE 및 GROUP BY 결과에서 새 열 만들기 (0) | 2023.02.06 |
Python에서 중복된 dict in 목록 제거 (0) | 2023.02.06 |