mysqlデータベースはデフォルトポートのlocalhostからTCP接続を許可しません。

mysqlデータベースはデフォルトポートのlocalhostからTCP接続を許可しません。

C ++プログラムを使用してデータベースに接続しようとしています。使っていますmysqlcppコネクタプログラムは自分のローカルコンピュータで実行されますが、SSHログイン後にリモートUbuntuサーバーで実行しようとすると、次のメッセージが表示されますtcp://localhost:3306tcp://127.0.0.1:3306

terminate called after throwing an instance of 'sql::SQLException'
  what():  Unknown MySQL server host 'tcp' (2)

私はデフォルトのポート3306からlocalhostに接続しようとしました。mysql -u root -pそのように入力してログインして手動で接続することもできます。

を使用してデータベースにログインした後にmysql -u root -p入力でき、設定は「オフ」とshow variables;表示されます。skip-networking

MySQLはネットワーク上でリッスンしています。

netstat -a | grep mysql
tcp        0      0 localhost:mysql         0.0.0.0:*               LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     20025    /var/run/mysqld/mysqld.sock

変更するのを忘れた設定はありますか? 「(2)」とはどういう意味ですか?

ベストアンサー1

ご提案ありがとうございます。 C ++コードを変更せずにmysqlcppconnectorを再インストールして問題を解決しました。私はこれがビルドに関連していると疑い始め、これを尋ねました。ここ

2 つのインストールの違いに関する注意事項: 1.1.12 を使用する代わりに、最新バージョンに再インストールし、ファイルを手動でコピーしてインストールしませんでした。

sudo apt-get install libmysqlcppconn-dev

偶然かどうかはわかりませんが、ダウンロードページで「以前のGAバージョンをお探しですか?」をクリックすると、バージョン1.1.12にリダイレクトされず、代わりに1.1.13にリダイレクトされることも確認しました。

その後、プログラムが実行されます。まあ、エラーは発生しましたが、他のエラーが発生しました。この問題に対する修正は非常に簡単でした。それだけの価値があるだけに、

Access Denied for User 'root'@'localhost'

入力して権限を確認したSELECT user,authentication_string,plugin,host FROM mysql.user;ところ、localhostにmysql_native_password権限(auth_socketのみ)がないことがわかり、次のように変更しました。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'secret_password_here';

これが他の誰かに役立つことを願っています。これは奇妙なことです。皆様のご協力に感謝します。

おすすめ記事