MariaDBでPlease run mysql_upgradeのエラーが大量に出ていた。

/var/log/messagesを見ると↓のログが大量に出力されていた。

Nov 21 22:16:01 base mysqld: 2018-11-21 22:16:01 0 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade
Nov 21 22:16:01 base mysqld: 2018-11-21 22:16:01 0 [Warning] InnoDB: Table mysql/innodb_table_stats has length mismatch in the column name table_name. Please run mysql_upgrade
Nov 21 22:16:01 base mysqld: 2018-11-21 22:16:01 0 [Warning] InnoDB: Table mysql/innodb_index_stats has length mismatch in the column name table_name. Please run mysql_upgrade

Please run mysql_upgradeと有るようにupgradeを実行すれば良いようだ。

何も考えずに実行

# mysql_upgrade
Version check failed. Got the following error when calling the 'mysql' command line client
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
FATAL ERROR: Upgrade failed

ああ・・ユーザーとパスワードですね・・・。

再度実行

# mysql_upgrade -u root -p
Enter password:
Phase 1/7: Checking and upgrading mysql database
Processing databases

mysql
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.gtid_slave_pos OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.index_stats OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.roles_mapping OK
mysql.servers OK
mysql.table_stats OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.transaction_registry OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
Phase 6/7: Checking and upgrading tables
Processing databases
information_schema
続きを読む "MariaDBでPlease run mysql_upgradeのエラーが大量に出ていた。"

xorgxrdpの依存関係でupdate失敗したので対処

Xwindowが入っているサーバーのupdateを実行しようとして依存関係でこけたのでメモ
check-updateが通ったので-yをつけて実行すると↓の状況でこける

---> パッケージ xorgxrdp.x86_64 0:0.2.8-1.el7 を 更新
---> パッケージ xorgxrdp.x86_64 0:0.2.8-3.el7 を アップデート
--> 依存性の処理をしています: xorg-x11-server-Xorg(x86-64) = 1.20.1 のパッケージ: xorgxrdp-0.2.8-3.el7.x86_64
--> 依存性解決を終了しました。
--> トランザクションの確認を実行しています。
---> パッケージ kernel-ml.x86_64 0:4.18.9-1.el7.elrepo を 削除
---> パッケージ kernel-ml-devel.x86_64 0:4.18.9-1.el7.elrepo を 削除
---> パッケージ xorgxrdp.x86_64 0:0.2.8-3.el7 を アップデート
--> 依存性の処理をしています: xorg-x11-server-Xorg(x86-64) = 1.20.1 のパッケージ: xorgxrdp-0.2.8-3.el7.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: xorgxrdp-0.2.8-3.el7.x86_64 (epel)
要求: xorg-x11-server-Xorg(x86-64) = 1.20.1
インストール: xorg-x11-server-Xorg-1.19.5-5.1.el7_5.0.1.x86_64 (@updates)
xorg-x11-server-Xorg(x86-64) = 1.19.5-5.1.el7_5.0.1
利用可能: xorg-x11-server-Xorg-1.19.5-5.el7.x86_64 (base)
xorg-x11-server-Xorg(x86-64) = 1.19.5-5.el7
利用可能: xorg-x11-server-Xorg-1.19.5-5.1.el7_5.x86_64 (updates)
xorg-x11-server-Xorg(x86-64) = 1.19.5-5.1.el7_5
問題を回避するために --skip-broken を用いることができます。
これらを試行できます: rpm -Va --nofiles --nodigest

xorg-x11-server-Xorgのバージョンが1.20.1を要求しているのに
標準のリポジトリだと1.19.5-5.1.el7_5.0.1までしか提供されておらずupdateに失敗する。

海外のサイトを見ると「ミラーサイトで提供が始まっているから待った方が良い」
みたいな事が書いてありましたが一日w待っても
提供されないのですぐに対処してみた。

まずはお約束のリポジトリの清掃

# yum clean all
読み込んだプラグイン:fastestmirror, langpacks
リポジトリーを清掃しています: base elrepo elrepo-kernel epel extras mariadb
...: nginx remi-php72 remi-safe skype-stable updates zabbix
...: zabbix-non-supported
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors

そしてパッケージが降ってくるか確認
CentOS-CRリポジトリを使用します。
CRリポジトリを開放してupdateすると一気にたくさんupdateがかかって怖いので
updateに引っかかったパッケージのみを対象にしました。

続きを読む "xorgxrdpの依存関係でupdate失敗したので対処"

abrtからのエラーが大量に出力されていた

/var/log/messagesをふと見ると↓の様にabrtが出力するエラーが大量に出ていたので対処

Aug 15 10:35:09 hogehoge abrt-server: 'post-create' on '/var/spool/abrt/Python-2018-08-15-10:35:09-18051' exited with 1
Aug 15 10:35:09 hogehoge abrt-server: Deleting problem directory '/var/spool/abrt/Python-2018-08-15-10:35:09-18051'
Aug 15 10:35:09 hogehoge python: detected unhandled Python exception in '/etc/munin/plugins/nginx_upstream_multi_'
Aug 15 10:35:09 hogehoge abrt-server: Not saving repeating crash in '/etc/munin/plugins/nginx_upstream_multi_'
Aug 15 10:40:06 hogehoge python: detected unhandled Python exception in '/etc/munin/plugins/nginx_upstream'
Aug 15 10:40:06 hogehoge abrt-server: Executable '/etc/munin/plugins/nginx_upstream' doesn't belong to any package and ProcessUnpackaged is set to 'no'
Aug 15 10:40:06 hogehoge abrt-server: 'post-create' on '/var/spool/abrt/Python-2018-08-15-10:40:06-18758' exited with 1
Aug 15 10:40:06 hogehoge abrt-server: Deleting problem directory '/var/spool/abrt/Python-2018-08-15-10:40:06-18758'
Aug 15 10:40:09 hogehoge python: detected unhandled Python exception in '/etc/munin/plugins/nginx_upstream_multi_'
Aug 15 10:40:09 hogehoge abrt-server: Executable '/etc/munin/plugins/nginx_upstream_multi_' doesn't belong to any package and ProcessUnpackaged is set to 'no'

ログで指摘がある様にabrtの設定でProcessUnpackagedをnoにするとyumでインストールされていない場合でもコアダンプを取るそうです。
また、OpenGPGCheckをnoにするとすべてのプログラムにおけるクラッシュを取得を取得するそうです。

それを踏まえて以下のabrt-action-save-package-data.confを編集

# diff abrt-action-save-package-data.conf*
13,14c13
< #OpenGPGCheck = yes
< OpenGPGCheck = no
---
> OpenGPGCheck = yes
22,23c21
< #ProcessUnpackaged = no
< ProcessUnpackaged = yes
---
> ProcessUnpackaged = no

こんな感じです。
abrtd再起動
# service abrtd restart

しばしmessegesをtailして様子を見ていると
新たなログが・・・ログが日本語なのはちょっとあれですね・・

Aug 15 22:15:09 hogehoge python: detected unhandled Python exception in '/etc/munin/plugins/nginx_upstream_multi_'
Aug 15 22:15:09 hogehoge abrt-server: sender の電子メールアドレスが指定されませんでした。今すぐ設定したいですか? 設定しなければ、'user@localhost' が使用されます。 [y/N]
Aug 15 22:15:09 hogehoge abrt-server: receiver の電子メールアドレスが指定されませんでした。今すぐ設定したいですか? 設定しなければ、'root@localhost' が使用されます。 [y/N]
Aug 15 22:15:09 hogehoge abrt-server: Undefined variable outside of [[ ]] bracket
Aug 15 22:15:09 hogehoge abrt-server: 電子メールを送信しています... 
Aug 15 22:15:09 hogehoge abrt-server: 電子メール通知を送信しています: root@localhost
Aug 15 22:15:09 hogehoge abrt-server: 電子メールが送信されました: root@localhost

pythonのエラーはあとでやるとしてabrtのメール送信設定がされてないようです。した覚えもないですからね・・・。
以下のconfでメールの設定をします。

# grep -v "#" /etc/libreport/plugins/mailx.conf
EmailFrom=root@hogehoge.net
EmailTo=hogehoge@hoge.com

abrtを再起動

# service abrtd restart

再度様子を見ていると、abrtからメール送信完了のログが・・・正直うざいっす。。。。

Aug 15 23:00:09 hogehoge abrt-server: 電子メールを送信しています... 
Aug 15 23:00:09 hogehoge abrt-server: 電子メール通知を送信しています: hogehoge@hoge.com
Aug 15 23:00:09 hogehoge abrt-server: 電子メールが送信されました: hogehoge@hoge.com

他にも出ているabrtのエラーを解決しない事には5分おきにメールが来ることになります。。

syslogから余計なログを消してみた

「ググったんかー」が口癖の昔の上司の教え曰く「不要なログは消せ」という教えを守るべく
syslogに出力される不要なログを消してみた。

今回の対象は、zabbixでSSHの監視を行うと監視のタイミングで出力される以下のログ

May 24 23:07:10 hogehoge sshd[13889]: Connection closed by 10.0.0.10 port 55814 [preauth]
May 24 23:08:11 hogehoge sshd[13951]: Connection closed by 10.0.0.10 port 40028 [preauth]
May 24 23:09:10 hogehoge sshd[14012]: Connection closed by 10.0.0.10 port 56596 [preauth]

こいつを消すためには

# vim /etc/rsyslog.conf

#### RULES ####
#add
if $msg contains 'preauth' then ~

とこんな感じで書いて

systemctl restart rsyslog

これできれいになりました。

ssh-copy-idでサーバー間パス無しログイン設定をした。ssh-copy-id

以前にもcluster shellを設定した際にやりましたが、サーバー間パス無しログインのメモ

まずは、接続元で鍵を作ります。
# ssh-keygen
Generating public/private rsa key pair.
略・・・

# ssh-copy-id root@接続先IP -p ポート指定

ssh-copy-idを使えば簡単ですね。

yumでssh2をインストールした。

wordpressのupdate用にSSH2をyumでインストールしたメモ

まずはphp-pearをインストール

# yum install php-pear

次にlibssh2 libssh2-devel

# yum install libssh2 libssh2-devel

更にpecl installでssh2を入れる

# pecl install ssh2
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
pecl/ssh2 requires PHP (version >= 4.0.0, version <= 6.0.0), installed version is 7.2.5 No valid packages found install failed

怒られてしまったので言われるままにpecl channel-updateを実行

[root@higherhope html]# pecl channel-update pecl.php.net
Updating channel "pecl.php.net"
Update of Channel "pecl.php.net" succeeded

再度挑戦

# pecl install ssh2
pecl/ssh2 requires PHP (version >= 4.0.0, version <= 6.0.0), installed version is 7.2.5 No valid packages found install failed

peclではPHP 7.2.5に対応するssh2は無いらしいのでyumでリベンジ

# yum install php-pecl-ssh2
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp.riken.jp
* epel: mirror.dmmlabs.jp
* extras: ftp.riken.jp
* remi-php72: mirrors.thzhost.com
* remi-safe: mirrors.thzhost.com
* updates: ftp.riken.jp
Resolving Dependencies
--> Running transaction check
---> Package php-pecl-ssh2.x86_64 0:1.1.2-1.el7.remi.7.2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php-pecl-ssh2 x86_64 1.1.2-1.el7.remi.7.2 remi-php72 44 k

Transaction Summary
================================================================================
Install 1 Package

Total download size: 44 k
Installed size: 171 k
Is this ok [y/d/N]: y
Downloading packages:
php-pecl-ssh2-1.1.2-1.el7.remi.7.2.x86_64.rpm | 44 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : php-pecl-ssh2-1.1.2-1.el7.remi.7.2.x86_64 1/1
Verifying : php-pecl-ssh2-1.1.2-1.el7.remi.7.2.x86_64 1/1

Installed:
php-pecl-ssh2.x86_64 0:1.1.2-1.el7.remi.7.2

インストール成功

念のためサービス再起動して終了

# systemctl restart nginx
# systemctl restart php-fpm

centos7でカーネルを指定して起動する

Ryzenで構築し直した自宅サーバーのkernelを4系にしたらどうもコンソールが表示されない。
リモートからのSSHやXRDPだとつながるがコンソールがつながらないのは不便なので
kernelを3系に戻して起動したときのメモ
Centos7からはgrub.cfgの編集をしてはダメなようで手順は
redhat公式サイトに載っている通りです。

現在のkernelを確認

# uname -r
4.16.2-1.el7.elrepo.x86_64

現在軌道に使用されているデフォルトkernelを表示

# grub2-editenv list
saved_entry=CentOS Linux (4.16.2-1.el7.elrepo.x86_64) 7 (Core)

起動に使用できるkernelの一覧を表示

# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.16.2-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-4012dc7197c64ed79c6e5dadbbfcdddc) 7 (Core)

grubは0から始まるので2行目の3.10.0-862.el7.x86_64で起動したいので

# grub2-set-default 1

確認

# cat /boot/grub2/grubenv |grep saved
saved_entry=1

設定を保存・反映する。
自宅サーバーはUEFIでcentosなので以下の様に

# grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

再起動して確認
# reboot