タグ: MariaDB

  • UbuntuでMariaDBのアップデートがエラーになった

    Ubuntu 20.04 でapt update , apt upgrade を実行したところ、MariaDBの更新でエラーになった。apt cleanや再実行では、解消せず。

    エラーの一部

    dpkg: error processing archive /var/cache/apt/archives/mariadb-server-core-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb (--unpack):

    エラーの全体

    $ sudo apt upgrade
    Reading package lists... Done
    Building dependency tree
    Reading state information... Done
    Calculating upgrade... Done
    The following packages were automatically installed and are no longer required:
      libmariadb3 linux-image-4.15.0-202-generic linux-modules-4.15.0-202-generic
      linux-modules-extra-4.15.0-202-generic
    Use 'sudo apt autoremove' to remove them.
    Get more security updates through Ubuntu Pro with 'esm-apps' enabled:
      libmagickcore-6.q16-6-extra imagemagick libmagickwand-6.q16-6
      imagemagick-6.q16 libopenexr24 libmagickcore-6.q16-6 imagemagick-6-common
    Learn more about Ubuntu Pro at https://ubuntu.com/pro
    The following packages will be upgraded:
      mariadb-server-10.3 mariadb-server-core-10.3
    2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    168 not fully installed or removed.
    2 standard LTS security updates
    Need to get 0 B/10.5 MB of archives.
    After this operation, 773 kB disk space will be freed.
    Do you want to continue? [Y/n] Y
    Preconfiguring packages ...
    (Reading database ... 132397 files and directories currently installed.)
    Preparing to unpack .../mariadb-server-core-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb ...
    Unpacking mariadb-server-core-10.3 (1:10.3.38-0ubuntu0.20.04.1) over (1:10.3.37+maria~ubu1804) ...
    dpkg: error processing archive /var/cache/apt/archives/mariadb-server-core-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb (--unpack):
     trying to overwrite '/usr/bin/my_print_defaults', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
    dpkg: regarding .../mariadb-server-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb containing mariadb-server-10.3:
     mariadb-server-10.3 conflicts with mysql-server-core-5.5
      mariadb-server-core-10.3 provides mysql-server-core-5.5 and is present and installed.
    dpkg: error processing archive /var/cache/apt/archives/mariadb-server-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb (--unpack):
     conflicting packages - not installing mariadb-server-10.3
    Errors were encountered while processing:
     /var/cache/apt/archives/mariadb-server-core-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb
     /var/cache/apt/archives/mariadb-server-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb
    E: Sub-process /usr/bin/dpkg returned an error code (1)

    強制的に上書きした。パッケージのパスはエラーで表示されたものをそのまま指定して、実行した。

    $ sudo dpkg -i --force-overwrite /var/cache/apt/archives/mariadb-server-core-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb

    実行例。ワーニングやエラーが出ていた。

    $ sudo dpkg -i --force-overwrite /var/cache/apt/archives/mariadb-server-core-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb
    (Reading database ... 132397 files and directories currently installed.)
    Preparing to unpack .../mariadb-server-core-10.3_1%3a10.3.38-0ubuntu0.20.04.1_amd64.deb ...
    Unpacking mariadb-server-core-10.3 (1:10.3.38-0ubuntu0.20.04.1) over (1:10.3.37+maria~ubu1804) ...
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/bin/my_print_defaults', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/bin/resolveip', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/share/man/man1/my_print_defaults.1.gz', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/share/man/man1/resolveip.1.gz', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/share/mysql/fill_help_tables.sql', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/share/mysql/maria_add_gis_sp_bootstrap.sql', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/share/mysql/mysql_performance_tables.sql', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/share/mysql/mysql_system_tables.sql', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/share/mysql/mysql_system_tables_data.sql', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/share/mysql/mysql_test_data_timezone.sql', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: warning: overriding problem because --force enabled:
    dpkg: warning: trying to overwrite '/usr/share/mysql/mysql_test_db.sql', which is also in package mariadb-server-10.3 1:10.3.37+maria~ubu1804
    dpkg: dependency problems prevent configuration of mariadb-server-core-10.3:
     mariadb-server-core-10.3 depends on libsnappy1v5 (>= 1.1.8); however:
      Package libsnappy1v5:amd64 is not configured yet.
    dpkg: error processing package mariadb-server-core-10.3 (--install):
     dependency problems - leaving unconfigured
    Processing triggers for man-db (2.9.1-1) ...
    Errors were encountered while processing:
     mariadb-server-core-10.3
    $

    この後、もう1回、apt updateとapt upgradeを実施した。その他のパッケージもキレイにインストールされた。

    念のため、OS再起動も実施したが起動に問題なし。MariaDBもバージョンアップされていることを確認できた。

  • FreeBSDでpkgをアップデートしたらMariaDBが起動しなくなった

    FreeBSDで、”pkg upgrade”して、パッケージを最新の状態にしたところ、MariaDBが起動しなくなった。エラーログをみていると、DBのテーブルを修復したあとにDBがシャットダウンされている。DBのファイル破損が原因かと思い、いろいろと調べて対応したが、実はファイルの問題ではなかった。

    原因は、MariaDBのバージョンが「MariaDB 10.5」に上がったことによる「my.cnf」ファイルの変更だった。

    /usr/local/etc/mysql/conf.d/my.cnf

    このconf.dのディレクトリに、my.cnfがあることで、これを読みにいって、その設定で失敗して、サービスが落ちていた。同じところに、client.cnfもserver.cnfもあるが、これを読まずにmy.cnfを先に読みにいって、落ちていた。my.cnfは、1つ上の階層の「/usr/local/etc/mysql/」にもあり、conf.dの下を読み込むように書かれている。

    いろいろと行ったのだが、対応の正解は、conf.dの下のmy.cnfを消す(リネームでOK)。server.cnfとclient.cnfの設定を確認して、MariaDB(mysqld_safe)を起動させる。

    ちなみに、errファイルに記録されていたログは下記。あとは、ログ自体が出力されていない。ログがそもそも出力されていなければ、my.cnfを疑うべきだった。

    2022-02-05 15:36:39 0 [Note] /usr/local/libexec/mariadbd (initiated by: unknown): Normal shutdown
    2022-02-05 15:36:39 0 [Note] Event Scheduler: Purging the queue. 0 events
    2022-02-05 15:36:39 0 [Note] InnoDB: FTS optimize thread exiting.
    2022-02-05 15:36:40 0 [Note] InnoDB: Starting shutdown...
    2022-02-05 15:36:40 0 [Note] InnoDB: Dumping buffer pool(s) to /var/db/mysql/ib_buffer_pool
    2022-02-05 15:36:40 0 [Note] InnoDB: Restricted to 2016 pages due to innodb_buf_pool_dump_pct=25
    2022-02-05 15:36:40 0 [Note] InnoDB: Buffer pool(s) dump completed at 220205 15:36:40
    2022-02-05 15:36:40 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
    2022-02-05 15:36:40 0 [Note] InnoDB: Shutdown completed; log sequence number 1363646560; transaction id 111190553
    2022-02-05 15:36:40 0 [Note] /usr/local/libexec/mariadbd: Shutdown complete
    
  • MySQLでSelectした結果をCSVでファイル出力する

    MySQLでSelect文の結果をファイルに書き出すのは簡単だった。Select文の最後に「INTO OUTFILE」でファイルの出力パスとファイル名を指定するだけだった。

    SELECT * FROM テーブル名 INTO OUTFILE '出力ファイルパス';

    それから、書き込み先の権限がないと、エラーで失敗する。その場合は、書き込みするディレクトリのパーミッションを確認する。下記は、失敗したところ。

    root@localhost [zen]> select * from item into outfile '/usr/home/zen/item.csv';
    ERROR 1 (HY000): Can't create/write to file '/usr/home/zen/item.csv' (Errcode: 13 "Permission denied")
    root@localhost [zen]>
  • MySQLのユーザを調べる

    MySQLに登録されているユーザを調べるには、mysqlデータベースを選択して、下記のSQL文を実行する。

    SELECT Host, User FROM user;

    Hostが「%」のものは接続制限なし。localhostやIPアドレスが指定されているものは、そのホストからの接続のみに制限されている。

    実行例)

    MySQL [mysql]> use mysql; 
    MySQL [mysql]> SELECT Host, User FROM user; 
    +-----------+---------------+ 
    | Host      | User          | 
    +-----------+---------------+ 
    | %         | testuser         | 
    | %         | root          | 
    | %         | kuro3       | 
    | localhost | mysql.session | 
    | localhost | mysql.sys     | 
    | localhost | root          | 
    +-----------+---------------+ 
    6 rows in set (0.145 sec) 
    MySQL [mysql]>
  • FreeBSDでpkgをアップデートしたらMariaDBが起動しなくなった

    FreeBSDで、”pkg upgrade”して、パッケージを最新の状態にしたところ、MariaDBが起動しなくなった。エラーログをみていると、DBのテーブルを修復したあとにDBがシャットダウンされている。DBのファイル破損が原因かと思い、いろいろと調べて対応したが、実はファイルの問題ではなかった。

    原因は、MariaDBのバージョンが「MariaDB 10.5」に上がったことによる「my.cnf」ファイルの変更だった。

    /usr/local/etc/mysql/conf.d/my.cnf

    このconf.dのディレクトリに、my.cnfがあることで、これを読みにいって、その設定で失敗して、サービスが落ちていた。同じところに、client.cnfもserver.cnfもあるが、これを読まずにmy.cnfを先に読みにいって、落ちていた。my.cnfは、1つ上の階層の「/usr/local/etc/mysql/」にもあり、conf.dの下を読み込むように書かれている。

    いろいろと行ったのだが、対応の正解は、conf.dの下のmy.cnfを消す(リネームでOK)。server.cnfとclient.cnfの設定を確認して、MariaDB(mysqld_safe)を起動させる。

    ちなみに、errファイルに記録されていたログは下記。あとは、ログ自体が出力されていない。ログがそもそも出力されていなければ、my.cnfを疑うべきだった。

    2022-02-05 15:36:39 0 [Note] /usr/local/libexec/mariadbd (initiated by: unknown): Normal shutdown
    2022-02-05 15:36:39 0 [Note] Event Scheduler: Purging the queue. 0 events
    2022-02-05 15:36:39 0 [Note] InnoDB: FTS optimize thread exiting.
    2022-02-05 15:36:40 0 [Note] InnoDB: Starting shutdown...
    2022-02-05 15:36:40 0 [Note] InnoDB: Dumping buffer pool(s) to /var/db/mysql/ib_buffer_pool
    2022-02-05 15:36:40 0 [Note] InnoDB: Restricted to 2016 pages due to innodb_buf_pool_dump_pct=25
    2022-02-05 15:36:40 0 [Note] InnoDB: Buffer pool(s) dump completed at 220205 15:36:40
    2022-02-05 15:36:40 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
    2022-02-05 15:36:40 0 [Note] InnoDB: Shutdown completed; log sequence number 1363646560; transaction id 111190553
    2022-02-05 15:36:40 0 [Note] /usr/local/libexec/mariadbd: Shutdown complete
  • MySQLでユーザを作り、DBの権限を割り当てる

    最初に、「create user」文で、ユーザを作る。その時にパスワードも設定する。

    次に、grant文で、DBの権限を割り当てる。grant文でユーザ作成も同時に行うこともできるけれど、個人的には、2文に分けた方が設定がわかりやすくて安心できる。

    例)DBとユーザを作り、DBにユーザの権限を付ける。

    create database dbname;
    create user 'user_name'@'localhost' IDENTIFIED BY 'password';
    grant all on 'dbname'.* TO 'user_name'@'localhost';
    • dbname は、データベース名を入れる
    • user_name は、ユーザ名を入れる
    • user_name は、ユーザ名を入れる
  • インストールされているMariaDBが64ビットかどうかを確認する

    64bitでインストールされているはずだが、念のため、MariaDBが64bitでインストールされているかどうかを調べる方法について。DBに接続した状態で、下記のコマンドを実施する。MySQLでも同じように調べることができる。

    show variables like 'version_compile_machine';

    これの結果が、「X86_64」になっていれば、64bitでインストールされている。「i386」や「i686」の場合は、32bitでインストールされている。

    MariaDB [(none)]> show variables like 'version_compile_machine';
    +-------------------------+--------+
    | Variable_name           | Value  |
    +-------------------------+--------+
    | version_compile_machine | x86_64 |
    +-------------------------+--------+
    1 row in set (0.001 sec)
    MariaDB [(none)]>
  • kernel: Out of memory: Kill processが発生する

    管理している環境の一つで、数か月に1回、忘れたころにMariaDB(MySQL)が落ちるという問題がある。

    messagesログをチェックしていくと、「~~~ kernel: Out of memory: Kill process ~~~」が発生し、MySQLのプロセスが殺されていた。

    調べていくと、メモリの使い過ぎの状態を解消するために、メモリを大量に使っていたMariaDB(MySQL)本体か子プロセスが生贄にされたということ。メモリが足りなくなって、MariaDBが落とされているわけだが、MariaDBがメモリを喰ったわけではなく、メモリが足りない時にメモリ使用の上位にいるプロセスが落とされているだけ。なので、本当の原因は別にいるはず。

    ■ログの内容:抜粋

    May 14 22:52:16 hostname kernel: Out of memory: Kill process 6534 (mysqld) score 52 or sacrifice child
    May 14 22:52:16 hostname kernel: Killed process 6534 (mysqld) total-vm:1674092kB, anon-rss:0kB, file-rss:0kB 
    

    とりあえず、急にDBが落ちるという不可解な障害の直接原因だけはわかった。

  • MySQL上のユーザを削除する方法

    drop user 文を使い、ユーザを削除する。 ユーザを削除すると、そのユーザに与えられていた権限も、もちろん削除される。

    ■構文

    drop user ユーザ名@localhost;

    localhostのところは、環境に応じて変える。 たとえば、DBのアクセスが「192.168.0.1」から受け付けるようになっている場合は、それを指定する。

    ■例

    MariaDB [mysql]> drop user you_name@localhost;
    Query OK, 0 rows affected (0.01 sec)
    
    MariaDB [mysql]>
    

    Query OK, O rowsだけど、ちゃんと削除できていた。

  • 「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」と表示された

    ちょっと急ぎの用があって、CentOS7を用意して、MariaDBとPHPとApache2をいれて、Wordpressを動作させようとしたところ、

    お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。
    

    と表示されて、Wordpressのセットアップが出来なかった。

    「php -i」 でPHPの状況を確認したところ、PHPのMySQL拡張が入っていなかった。 なので、yumでphp-mysqlをインストールした。

    yum -y install php-mysql
    

    これで、解消。
    っていうか、これだけで済むんだから、楽。
    make, make installしなくていいだけで本当に楽。
    楽しすぎて、いろいろと忘れそう。