MySQL接続エラー解決法とサンプルコード
このエラーは、MySQLサーバが実行されていないか、ファイアウォールが接続をブロックしている可能性があります。
MySQLサーバが実行されていることを確認してください。ファイアウォールが接続をブロックしている場合は、ファイアウォールの設定を確認してください。
以下は、MySQLサーバが実行されていることを確認するためのコマンドです。
sudo systemctl start mysql
以下は、ファイアウォールが接続をブロックしているかどうかを確認するためのコマンドです。
sudo ufw status
ファイアウォールが接続をブロックしている場合は、以下のコマンドを使用してファイアウォールの設定を変更してください。
sudo ufw allow 3306/tcp
エラーメッセージ: "Can't connect to MySQL server on '127.0.0.1' (10061) (2003)"
このエラーは、MySQLサーバに接続できないことを示しています。通常、以下のような原因が考えられます。
- MySQLサーバが起動していない。
- ファイアウォールがMySQLサーバへの接続をブロックしている。
- MySQLサーバのポート番号が間違っている。
MySQLサーバの起動確認
sudo systemctl start mysql
ファイアウォールの確認と許可
sudo ufw status
もしファイアウォールがMySQLサーバへの接続をブロックしている場合は、以下のように許可します。
sudo ufw allow 3306/tcp
ポート番号の確認
MySQLサーバのポート番号が正しいことを確認します。通常は3306ですが、変更されている場合があります。
sudo netstat -tulnp | grep mysql
ホスト名の確認
import mysql.connector
try:
mydb = mysql.connector.connect(
host="localhost",
user="your_username",
password="your_password",
database="your_database"
)
mycursor = mydb.cu rsor()
mycursor.execute("SELECT * FROM your_table ")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
except mysql.connector.Error as err:
print(f"Error: {err}")
MySQL接続エラーの代替方法
代替方法
sudo systemctl restart mysql
sudo ufw status
sudo ufw allow 3306/tcp
MySQLサーバのポート番号を変更します。
sudo systemctl stop mysql
sudo nano /etc/mysql/mysql.server
ファイル内の MYSQLD_PORT=3306
を変更し、保存します。
sudo systemctl start mysql
sudo systemctl stop mysql
sudo nano /etc/mysql/mysql.server
sudo systemctl start mysql
MySQLサーバの再インストール
MySQLサーバを再インストールします。
sudo apt-get remove mysql-server
sudo apt-get install mysql-server
他のデータベースシステムの使用
MySQLの代わりに、他のデータベースシステム(例えば、PostgreSQL、SQLite)を使用することもできます。
mysql database localhost