次を使用して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のユーザーは実際には2つの部分で構成されています。
- ユーザー名
- ネットワークの場所
したがって、ユーザーは'root'@'localhost'
localhostからログインするためのルートログインを作成します。これまで理解できましたか?
ホストを指定しないと、MySQLクライアントはデフォルトでlocalhostで実行されているMySQLインスタンスに接続されているため、実際にこれらの現象が発生することがわかります。
したがって、MySQLサーバーの観点からは、ログイン試行はlocalhostのルートによって開始されます'root'@'localhost'
。
--password
お客様のパスワードに関しては、クライアントの一部のバージョンでは、コマンドラインでパスワードを指定するときにnotを使用するように要求したことが記憶されています。-p