SonarQube と MySQL 5.5 (MariaDB): CentOS 7 でのセットアップとトラブルシューティング

2024-06-19

CentOS 7 における SonarQube のセットアップ:MySQL 5.5 (MariaDB) での失敗と解決策

このチュートリアルでは、CentOS 7 に SonarQube をインストールして MySQL 5.5 (MariaDB) を使用する際に発生する起動エラーと、その解決策について説明します。

エラー内容

SonarQube の起動時に以下のエラーが発生することがあります。

Unsupported mysql version: 5.5. Minimal supported version is 5.6.

このエラーは、SonarQube が MySQL 5.6 以降のみをサポートしており、5.5 では動作しないことを示しています。

解決策

この問題を解決するには、以下の 2 つの方法があります。

MySQL 5.6 以降にアップグレードする

SonarQube を動作させるには、MySQL 5.6 以降が必要です。そのため、既存の MySQL 5.5 を 5.6 以降にアップグレードする必要があります。

アップグレード手順

MySQL 5.5 を 5.6 以降にアップグレードするには、以下の手順に従ってください。

  1. MySQL 公式リポジトリを追加します。
sudo yum install https://repo.mysql.com/yum/mysql-rep.rpm
  1. MySQL 5.6 をインストールします。
sudo yum install mysql-server
  1. MySQL サービスを起動します。
sudo systemctl start mysqld
  1. MySQL セキュリティスクリプトを実行して、初期設定を行います。
sudo mysql_secure_installation
  1. SonarQube を再起動します。
sudo systemctl restart sonar

SonarQube 設定ファイルを変更して MySQL バージョンを偽装する

MySQL 5.6 以降へのアップグレードが難しい場合は、SonarQube 設定ファイルを変更して MySQL バージョンを偽装することができます。これは、非推奨の方法であり、将来的な SonarQube のアップグレード時に問題が発生する可能性があることに注意してください。

設定ファイルの変更手順

  1. SonarQube 設定ファイルを開きます。
sudo nano /opt/sonarqube/conf/sonar.properties
  1. sonar.jdbc.url プロパティの値を以下のように変更します。
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&useSSL=false
    sudo systemctl restart sonar
    

    注意事項

    • 上記の方法は、あくまでも 臨時的な解決策 です。将来的には、MySQL 5.6 以降にアップグレードすることを強く推奨します。
    • SonarQube 設定ファイルを変更する場合は、必ずバックアップを取ってから行ってください。
    • MySQL 5.5 を使用し続ける場合、SonarQube で予期せぬ動作が発生する可能性があることに注意してください。

      SonarQube を CentOS 7 に MySQL 5.5 (MariaDB) でインストールする場合、MySQL 5.6 以降にアップグレードすることが最善の方法です。アップグレードが難しい場合は、SonarQube 設定ファイルを変更して MySQL バージョンを偽装することができますが、これは非推奨の方法であり、将来的な問題を引き起こす可能性があることに注意する必要があります。




      Create a MySQL database for SonarQube

      sudo mysql -u root -p
      mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
      mysql> CREATE USER 'sonar'@'localhost' IDENTIFIED BY 'sonar';
      mysql> GRANT ALL PRIVILEGES ON sonar.* TO 'sonar'@'localhost';
      mysql> FLUSH PRIVILEGES;
      mysql> exit;
      

      Download and extract SonarQube

      wget https://binaries.sonarsource.com/distribution/sonarqube/sonarqube-9.1.0.zip
      unzip sonarQube-9.1.0.zip
      mv sonarQube-9.1.0 sonar
      

      Edit the SonarQube configuration file

      nano sonar/conf/sonar.properties
      

      Find the following lines and change the values as needed:

      sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&useSSL=false
      sonar.jdbc.username=sonar
      sonar.jdbc.password=sonar
      

      Start SonarQube

      ./sonar/bin/linux-x86_64/sonar.sh start
      

      SonarQube should be available at http://localhost:9000. You can log in using the username admin and the password you set in the configuration file.

      Additional notes:

      • Make sure you have Java 8 installed.
      • You may need to adjust the firewall settings to allow SonarQube to access the internet.

      I hope this helps!




      CentOS 7 における SonarQube のセットアップ:MySQL 5.5 (MariaDB) でのその他の解決策

      MySQL 5.7 を使用して互換性モードを有効にする

      MySQL 5.7 は、MySQL 5.6 との互換性モードを備えています。このモードを有効にすることで、SonarQube は MySQL 5.5 を 5.6 として認識し、正常に動作する可能性があります。

        sudo yum install mysql-server-5.7
        
        1. MySQL 設定ファイルを編集します。
        sudo nano /etc/my.cnf
        
        1. 以下の行を追加します。
        [mysqld]
        sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER
        
          sudo systemctl restart mysqld
          
            sudo systemctl restart sonar
            

            Docker を使用して SonarQube を実行すると、オペレーティングシステムのバージョンや MySQL のバージョンに関係なく、SonarQube を簡単にインストールして実行することができます。

            Docker を使用して SonarQube を実行する手順

            1. Docker をインストールします。
            sudo yum install docker
            
            1. SonarQube Docker イメージをプルします。
            docker pull sonarqube:latest
            
              docker run -d -p 9000:9000 -v /path/to/data:/opt/sonarqube/data sonarqube:latest
              
              1. Web ブラウザで http://localhost:9000 にアクセスして、SonarQube にアクセスします。

              SonarQube 6.7 以前は、MySQL 5.5 をサポートしています。ただし、SonarQube 6.7 はすでにサポート終了しており、セキュリティ上の脆弱性がある可能性があることに注意してください。

              SonarQube 6.7 以前をインストールする手順

              1. SonarQube 6.7 以前のバイナリをダウンロードします。
              wget https://binaries.sonarsource.com/distribution/sonarqube/sonarqube-6.7.10.zip
              unzip sonarQube-6.7.10.zip
              mv sonarQube-6.7.10 sonar
              
                nano sonar/conf/sonar.properties
                
                sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&useSSL=false
                sonar.jdbc.username=sonar
                sonar.jdbc.password=sonar
                
                  ./sonar/bin/linux-x86_64/sonar.sh start
                  
                    • Docker を使用して SonarQube を実行する場合は、SonarQube の公式ドキュメントにある指示に従ってください。
                    • SonarQube 6.7 以前を使用する場合は、セキュリティ上の脆弱性がある可能性があることに注意してください。

                      mysql jdbc sonarqube


                      MySQLの真価を発揮する!開発と本番のデータベース戦略

                      開発環境データベースは、ソフトウェア開発者がコードのテストやデバッグを行うために使用するデータベースです。本番環境のデータとは別のデータを使用して、新しい機能を試したり、コードの変更を検証したりすることができます。本番環境とは別の独立したデータベース...


                      MySQL接続エラーを解消!Docker ComposeでDjangoとMySQLを連携させる

                      DjangoプロジェクトをDocker Composeで実行する際、MySQLデータベースに接続できない問題が発生することがあります。この問題は、ネットワーク設定、環境変数、データベースの設定など、いくつかの原因によって発生します。原因考えられる原因は以下の通りです。...


                      MySQL/MariaDBでユーザーに権限を付与できない?「Can't find matching rows in table」エラーの解決策とは?

                      このエラーは、MySQL/MariaDB でユーザーに権限を付与しようとした際に発生します。具体的には、GRANT ステートメントを実行したときに、指定されたユーザーが存在しない場合に発生します。原因このエラーが発生する主な原因は次のとおりです。...


                      MySQL/MariaDB初心者でも安心!「errno: 121 Duplicate key on write or update」エラーの基礎知識と解決のヒント

                      MySQL/MariaDB でテーブルを作成する際、CONSTRAINT を使用して主キーやユニークキーを定義することがあります。しかし、CONSTRAINT で定義した制約に違反するようなデータ挿入や更新操作を実行しようとすると、errno: 121 "Duplicate key on write or update" エラーが発生します。...


                      MariaDB:innodb_strict_mode システム変数でエラーを警告として表示

                      エラーを警告として表示する方法以下のいずれかの方法で、エラーを警告として表示することができます。sql_mode 変数に STRICT_ALL_ERRORS オプションを追加するinnodb_strict_mode システム変数を ON に設定する...


                      SQL SQL SQL SQL Amazon で見る



                      SonarQube 5.5とMariaDBのトラブルシューティング:よくある問題と解決策

                      MariaDB は、MySQL と互換性のあるオープンソースのデータベース管理システムです。MySQL のフォークとして開発されており、多くの機能とパフォーマンスの改善がされています。SonarQube-ops は、SonarQube を運用するためのツールセットです。データベースの初期化、ユーザーの管理、バックアップなどのタスクを自動化することができます。


                      SonarQubeとMariaDB 10のパフォーマンスチューニング:より高速な静的コード分析を実現

                      原因: MariaDB 10 のデフォルトの認証方式である caching_sha_256_password は、SonarQube が使用する mysql_native_password と互換性がありません。解決策:MariaDB 10 の認証方式を mysql_native_password に変更する。