다음을 사용하여 CSV에서 mysql로 데이터를 복사하려고합니다.쉘 스크립트나는 아주 새로운 것입니다. 테스트 서버를 사용하고 있습니다.
mysql -u root -proot csv_imports -e "LOAD DATA INFILE '/var/www/html/$_csv_directory/$_csv_files' REPLACE INTO TABLE temp_test_data FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'"
오류가 발생했습니다.
오류 1045(28000): 사용자 "root"@"localhost"에 대한 액세스가 거부되었습니다(비밀번호 사용: YES).
localhost에서 작업하지 않는데 오류가 발생하는 이유는 무엇입니까?'루트'@'로컬호스트'?
그런 다음 시도했습니다.
mysql -h name-database-db-instance.something.some-server.com -P 3306 -u root -proot -e "LOAD DATA INFILE '/var/www/test.server.re/public_html/csv_files/$_csv_files' REPLACE INTO TABLE table_data FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'"
이제 오류가 발생합니다.
사용자 "coded_db_user"@"%"에 대한 액세스가 거부되었습니다(비밀번호 사용: YES).
답변1
"localhost"에 대한 질문에 대답하려면 MySQL 사용자에 대해 조금 알아야 합니다.
MySQL의 사용자는 실제로 두 부분으로 구성됩니다.
- 사용자 이름
- 네트워크 위치
따라서 사용자는 'root'@'localhost'
localhost에서 로그인하기 위해 루트 로그인을 만듭니다. 지금까지 이해가 됐나요?
호스트를 지정하지 않으면 MySQL 클라이언트가 기본적으로 localhost에서 실행되는 MySQL 인스턴스에 연결되기 때문에 실제로 이러한 현상이 나타나는 것을 볼 수 있습니다.
따라서 MySQL 서버의 관점에서 로그인 시도는 localhost의 루트에 의해 시작됩니다 'root'@'localhost'
.
--password
귀하의 비밀번호와 관련하여, 클라이언트의 일부 버전에서는 명령줄에서 비밀번호를 지정할 때 not을 사용하도록 요구했던 것으로 기억됩니다 .-p