Ubuntu mysql server  Fatal error: Illegal or unknown default time zone ‘Asia/Tokyo’ sudo systemctl restart mysql でエラーがでるとき。

Ubuntu mysql server  Fatal error: Illegal or unknown default time zone ‘Asia/Tokyo’  sudo systemctl restart mysql でエラーがでるとき。

その1

sudo systemctl status mysql.service

システムログの確認

Journalctlを使用してより詳細なエラーメッセージを確認します。

これにより、問題の原因を特定する手がかりが得られるかもしれません。

MySQLのログファイルを確認して、より詳細なエラーメッセージを探し、問題の原因を特定することが重要です。ログファイルは通常、/var/log/mysql/error.logにあります。

MySQLサーバーが起動に失敗している原因は、「Asia/Tokyo」というタイムゾーンが認識されない場合。

解決策

この問題を解決するためには、MySQLに’Tokyo’タイムゾーンを認識させる必要があります。以下の手順を実行してください。

ステップ1: タイムゾーン情報のインポート

MySQLのタイムゾーン情報は、システムのタイムゾーンデータベースからMySQLのデータベースにインポートする必要があります。
これを行うには、まずMySQLサーバーがタイムゾーン情報を格納するためのテーブルが存在するかどうかを確認し、必要に応じてこれらのテーブルを作成します。

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

このコマンドは、システムのタイムゾーン情報(/usr/share/zoneinfo)を読み込み、それをMySQLにインポートします。
このコマンドを実行する際には、適切なMySQLのルートパスワードを入力する必要があります。

ステップ2: MySQLの設定変更

MySQLの設定ファイルを編集して、タイムゾーンを明示的に設定します。MySQLの設定ファイルは一般的に/etc/mysql/my.cnfやそのサブディレクトリにあります。このファイルを編集し、以下の行を[mysqld]セクションに追加または変更してください。

ini

[mysqld] default-time-zone = ‘Asia/Tokyo’

ステップ3: MySQLサーバーの再起動

sudo systemctl restart mysql

 

 

その2

これらの手順により、MySQLサーバーが’Tokyo’タイムゾーンを認識し、以前のエラーなしに起動するはずです。
もし依然として問題が発生する場合は、設定ファイルの変更が正しく行われているか、または他の設定が問題を引き起こしていないかを確認してください。

ステップ1: MySQLサービスの状態確認

まず、エラーの詳細を確認するためにMySQLサービスの状態を確認します。

sudo systemctl status mysql.service

ステップ2: システムログの確認

次に、journalctlを使用してより詳細なエラーメッセージを確認します。これにより、問題の原因を特定する手がかりが得られるかもしれません。

journalctl -xeu mysql.service

ステップ3: MySQL設定の確認

もし上記のログから具体的なエラー原因が明確でない場合、/etc/mysql/my.cnfファイルまたはその他の設定ファイルに追加したdefault-time-zoneの設定を一時的にコメントアウトしてみてください。

#[mysqld] #default-time-zone = ‘Asia/Tokyo’

その後、MySQLサービスを再起動してみてください。

sudo systemctl restart mysql

ステップ4: タイムゾーンの設定方法の再考

もしMySQLが’Asia/Tokyo’タイムゾーン設定で起動に失敗する場合、システム上でこのタイムゾーンが正しく認識されているか、またはタイムゾーン情報がMySQLに正しくインポートされているかを再確認してください。

MySQLがタイムゾーン情報を認識できるようにするためには、システムのタイムゾーンデータをMySQLのタイムゾーンテーブルにインポートする必要があります。この作業は以前のステップで実行しましたが、エラーメッセージやサーバーの状態を再確認して、このプロセスが正しく完了していることを確認してください。

ステップ5: MySQLのエラーログの確認

最後に、MySQLのエラーログを確認して、設定変更後に発生した具体的なエラーを確認します。

sudo cat /var/log/mysql/error.log

このログファイルには、MySQLサーバーの起動に失敗した具体的な原因が記録されている可能性があります。ログに記載されているエラーメッセージを基に、問題の解決策を探してください。

 

その3

 

もし問題が解決しない場合は、設定の変更を一つずつ元に戻してみるか、設定変更の影響を受ける可能性のある他の項目を確認してください。また、MySQLの公式ドキュメントやコミュニティフォーラムで類似の問題に関する情報を検索することも有効です。

default-time-zone = ‘Asia/Tokyo’ の設定が原因でMySQLが起動に失敗する場合、問題を解決するために別のアプローチを試みる必要があります。以下に、確認しながら進めるためのステップを示します。

ステップ1: タイムゾーンテーブルの確認

MySQLが Asia/Tokyo というタイムゾーンを認識できるようにする前に、MySQLのタイムゾーンテーブルに適切なデータが含まれていることを確認する必要があります。

  • MySQLサーバーにログインします。mysql -u root -p
  • タイムゾーンテーブルに Asia/Tokyo が含まれているかを確認します。SELECT * FROM mysql.time_zone_name WHERE Name = ‘Asia/Tokyo’;

    このクエリの結果が空であれば、タイムゾーン情報がデータベースにインポートされていないことを意味します。

ステップ2: タイムゾーン情報のインポート

タイムゾーンテーブルが空の場合、または Asia/Tokyo が見つからない場合は、システムのタイムゾーンデータをMySQLにインポートする必要があります。

sudo mysql_tzinfo_to_sql /usr/share/zoneinfo | sudo mysql -u root -p mysql

このコマンドはシステムのタイムゾーン情報をMySQLデータベースにインポートします。エラーが発生しないことを確認してください。

ステップ3: MySQLの設定変更

タイムゾーン情報が正しくインポートされたことを確認した後、MySQLの設定を直接変更する代わりに、サーバー起動時またはクライアント接続時にタイムゾーンを設定する方法を検討します。

  • サーバー起動時: MySQLサーバーを起動する際に、コマンドラインオプションでタイムゾーンを指定する方法があります。これは一般的にはサービスファイルや起動スクリプトを編集して行いますが、直接的な方法としては推奨されません。
  • クライアント接続時: アプリケーションやスクリプトからMySQLに接続する際に、セッションのタイムゾーンを設定することができます。例えば、PHPやPythonなどのプログラムから接続する際にタイムゾーンを指定することが可能です。

ステップ4: タイムゾーンの動的設定

アプリケーションがMySQLに接続した直後に、次のSQLコマンドを実行してセッションのタイムゾーンを設定することもできます。

sql

SET time_zone = ‘Asia/Tokyo’;

この方法を使用すれば、MySQLサーバー自体の設定を変更せずに、アプリケーションレベルでタイムゾーンを制御することが可能です。

注意点

  • タイムゾーン情報のインポート後にも default-time-zone = ‘Asia/Tokyo’ 設定でエラーが発生する場合は、MySQLサーバーのログファイルを再度確認して、エラーの詳細情報を見つけてください。
  • MySQLの設定やタイムゾーンの扱いに関しては、使用しているMySQLのバージョンによって挙動が異なる場合があるため、公式のドキュメントを参照することが重要です。

ubuntsu /var/www/html 権限問題

ubuntsu /var/www/html 権限問題

GPT

/var/www/htmlディレクトリの権限問題に対処するには、以下のステップを実行してください。
このディレクトリは通常、WebサーバーがWebコンテンツを保存する場所です。
適切な権限を設定することで、セキュリティを確保しつつ、必要なユーザーやグループがファイルを読み書きできるようにします。

ステップ 1: 現在の権限の確認

  1. ターミナルを開きます。
  2. 以下のコマンドを実行して、/var/www/htmlディレクトリの現在の権限を確認します。
ls -ld /var/www/html

ステップ 2: 権限の設定

  • 読み取り/書き込み/実行権限の設定: ウェブサーバーのユーザー(例: www-data for Apache on Ubuntu)がコンテンツを適切に処理できるように、
    所有者またはグループに対して適切な権限を設定します。

オーナーとグループの変更

  1. ウェブサーバーのユーザー(例えば、Apacheの場合はwww-data)を/var/www/htmlのオーナーとグループに設定します。
sudo chown -R www-data:www-data /var/www/html

権限の設定

  1. 必要な権限を設定します。一般的には、オーナーとグループに読み書きの権限を与え、他のユーザーには読み取りのみの権限を与えます。
sudo chmod -R 775 /var/www/html

この設定では、オーナーとグループのユーザーがファイルを読み書きし、ディレクトリにアクセスしてファイルを作成できるようになります。
他のユーザーは読み取りとディレクトリ内のファイルのリストアップのみが可能です。

ステップ 3: 変更の確認

  • 変更後、再度権限を確認して、適切に設定されたことを確認します。
ls -ld /var/www/html

注意点

  • セキュリティを考慮して、必要最小限の権限を与えることが重要です。
  • 特定のファイルやディレクトリに対して特別な権限が必要な場合は、それに応じてchmodchownコマンドを適用してください。

これらの手順に従っても問題が解決しない場合、または特定の設定が必要な場合は、より具体的な状況を教えてください。

 

/var/www/html 以下のディレクトリ全部に対して行う

GPT

/var/www/html以下のすべてのディレクトリ(サブディレクトリを含む)に対して権限を設定するには、以下のコマンドを使用します。
これにより、すべてのディレクトリが適切なオーナーとグループに変更され、必要な権限が適用されます。

オーナーとグループの変更

  1. /var/www/html以下の全てのディレクトリとファイルのオーナーとグループをウェブサーバーのユーザー(例: www-data for Apache on Ubuntu)に変更します。
sudo chown -R www-data:www-data /var/www/html

このコマンドは、/var/www/htmlディレクトリとそのサブディレクトリに含まれる全てのファイルとディレクトリのオーナーとグループをwww-dataに変更します。

権限の設定

  1. ディレクトリに対して読み書き実行(rwx)権限を設定し、ファイルには適切な権限を個別に設定するには、以下のコマンドを使用します。
    ここではディレクトリのみを対象に権限を設定し、ファイルには別途権限を設定する方法を紹介します。

ディレクトリに対してのみ権限を設定する場合:

sudo find /var/www/html -type d -exec chmod 775 {} \;

ファイルに対して適切な権限(例: 読み書き権限)を設定する場合:

sudo find /var/www/html -type f -exec chmod 664 {} \;

この2つのコマンドは、/var/www/htmlディレクトリとそのサブディレクトリ内のディレクトリに775の権限を、ファイルには664の権限を再帰的に適用します。
775はオーナーとグループに読み書き実行権限を与え、他のユーザーには読み実行権限を与えることを意味します。
664
はオーナーとグループに読み書き権限を与え、他のユーザーには読み権限のみを与えます。

注意点

  • セキュリティを考慮して、公開するWebサイトの内容には特に注意して、不要な書き込み権限を与えないようにしてください。
  • 権限の変更はサーバーのセキュリティに直接影響するため、操作は慎重に行ってください。

これらのステップを実行することで、/var/www/html以下の全ディレクトリとファイルの権限問題を適切に解決できるはずです。

Ubuntuサーバーを再起動する方法

Ubuntuサーバーを再起動する方法

Ubuntuサーバーの管理において、コマンドラインからの再起動やシャットダウンは基本的な操作です。
本記事では、Ubuntuサーバーを再起動や停止する方法について、わかりやすく解説します。

Ubuntuサーバーを再起動する主なコマンドは以下の二つです。

  1. shutdown -r コマンド
    • 再起動するまでの時間を指定できます。
    • 指定した時間が来るまで再起動を待機させることができ、shutdown -c コマンドでこの待機をキャンセルすることが可能です。
    • 再起動の通知メッセージを全ユーザーに送ることができます。これにより、他のユーザーは作業の保存や終了の準備ができます。
  2. reboot コマンド
    • コマンドを実行すると即時に再起動が始まります。
    • 再起動の通知メッセージはありません。

再起動までの時間を指定する

  • 分単位で指定: sudo shutdown -r +[分]
  • 時間指定: sudo shutdown -r hh:mm

再起動のキャンセル

  • sudo shutdown -c

再起動の通知メッセージ

  • sudo shutdown -r +[時間] コマンドを使用すると、指定時間までの間、再起動の通知メッセージが送られます。

Ubuntuサーバーを停止(シャットダウン)する方法

Ubuntuサーバーをシャットダウンするためには、shutdown -h コマンドを使用します。

停止までの時間を指定する

  • 分単位で指定: sudo shutdown -h +[分]
  • 時間指定: sudo shutdown -h hh:mm

即時に停止(シャットダウン)させる

  • sudo shutdown -h now もしくは sudo shutdown -h +0

停止(シャットダウン)のキャンセル

  • sudo shutdown -c

この情報をもとに、Ubuntuサーバーの再起動やシャットダウンを適切に管理することができます。サーバーを管理する際は、操作が他のユーザーに影響を与えないよう、通知機能を活用することをお勧めします。

ubuntsuで、MySQLのプロセスの強制終了

ubuntsuで、MySQLのプロセスの強制終了

MySQLサービスが停止しない場合、プロセスを強制的に終了させることができます。まず、MySQLプロセスのプロセスID(PID)を見つけます。

ps aux | grep mysql

このコマンドは、実行中のMySQLプロセスのリストを表示します。プロセスIDは行の最初に表示されます。

次に、kill コマンドを使用して、該当するプロセスを強制的に終了させます。

sudo kill -9 [プロセスID]

ここで [プロセスID] は、終了させたいMySQLプロセスのIDに置き換えてください。

MySQLサービスの再起動

プロセスを終了させた後、MySQLサービスを再起動してみてください。

sudo systemctl start mysql

Ubuntsuで、ssh のポートを 22ではなく、2222にしたい

Ubuntsuで、ssh のポートを 22ではなく、2222にしたい

GPT

SSHのポートをデフォルトの22から2222に変更するには、SSH設定ファイルを編集し、ファイアウォールの設定を更新する必要があります。以下の手順に従って操作を行ってください。

  1. SSH設定ファイルを編集する

    まず、SSHの設定ファイルsshd_configを編集します。以下のコマンドでエディタを開きます(nanoを好みのエディタに置き換えても構いません)。

    sudo nano /etc/ssh/sshd_config
  2. ポート番号を変更する

    エディタが開いたら、Port 22という行を探し、Port 2222に変更します。もしPort 22の行がコメントアウトされている(行の先頭に#がある)場合は、コメントアウトを解除して(#を削除して)変更してください。

    Port 2222

    変更後、ファイルを保存してエディタを閉じます(nanoの場合は、Ctrl + Oで保存して、Ctrl + Xで閉じます)。

  3. SSHサービスを再起動する

    設定を適用するためにSSHサービスを再起動します。

    sudo systemctl restart sshd
  4. ufwファイアウォールでポート2222を許可する

    ファイアウォールで新しいSSHポートへのアクセスを許可する必要があります。

    sudo ufw allow 2222/tcp
  5. ファイアウォールの状態を確認する

    新しいルールが適切に追加されたことを確認します。

    sudo ufw status

これでSSHのポートが22から2222に変更され、ufwファイアウォールが新しいポートへのアクセスを許可するように設定されました。これからはSSH接続に-p 2222オプションを使用して、新しいポート経由で接続する必要があります。

例えば、SSHクライアントからの接続コマンドは次のようになります。

ssh -p 2222 ユーザー名@サーバーのアドレス

この変更を行った後は、特にリモートで作業している場合には、新しいポート経由でSSH接続が正常に機能することを確認してください。また、使用しているネットワークやクライアントのファイアウォール設定が新しいポートをブロックしていないことも確認してください。