haiju's 開発メモ

開発に必要な情報を自分用にメモ

MySQL5.6.40をソースコードからインストールしてみる

仕事先で使っているCentOS6.5にMySQL 5.6.xの最新を

再インストールしようとしてyumからバイナリで実行したら

見事に、稀に見る起動できないパターンで、いろいろ調べて

対応したけど、どうにもならなかったので今回はソース

コードから再々インストールにチャレンジしてみるテストw

cmakeとncurses-develもソースコードからインストールする

という記事を見てそこから始めようと思ったが、そのURL

を思い出せなくて時間がかかったので、yumでバイナリを

インストールすることで対応したw(ΦωΦ;)

gitの最新版もソースコードをビルドしてインストールしたから

MySQLもあわよくばそれでいいよねって思ったw

まぁビルドに成功するといいな。

話はまずそれからだwww

[手順]

1. wgetで公式から5.6.40のソースコードを取得。

# wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.40.tar.gz

2. /usr/local/src に移動し、tarで展開。

# cd /usr/local/src

# tar zvxf mysql-5.6.40.tar.gz

3. yumでcmakeとncurses-develをインストール。

# yum install cmake ncurses-devel

4. cmake実行。

# cmake . -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_SSL=bundled

5. make実行。

# make

6. make install実行。

# make install

7. mysqlのグループとユーザーを作成し権限を変更。

# groupadd mysql

# useradd -g mysql -d /usr/local/mysql mysql

# chown -R mysql:mysql /usr/local/mysql

8. データディレクトリを作成して、初期化し、権限を変更。

# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# chown -R mysql:mysql /usr/local/mysql/data/

9. 自動起動の設定。

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

# chmod +x /etc/init.d/mysql

# chkconfig --add mysql

10. ランレベルの設定を確認。

# chkconfig --list | grep mysql

mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off

11. 起動スクリプトの変更。

# vim /etc/init.d/mysql

basedir=/usr/local/mysql

datadir=/usr/local/mysql/data

12. サービスの起動。

# service mysql start

13. エラーが発生して起動しなかったら、my.cnf修正で対応。

 /etc/my.cnfのバックアップを削除して、/usr/local/mysql/に

 自動作成されていたものを採用。

 ちなみに、メッセージがわかりづらいw(ΦωΦ)

Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid).

(ex) portはclientとserverで別の番号を指定。

[client]

client.port = 3306

[mysqld]

mysqld.port = 3307

14. エラーなくサービスが起動することを確認。

# service mysql start

Starting MySQL. SUCCESS!

15. クライアントを起動してrootのパスワードを設定。

# /usr/local/mysql/bin/mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.40-log Source distribution
 
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement
 
mysql> SET PASSWORD FOR

root@localhost=PASSWORD('設定するrootのパスワード');
Query OK, 0 rows affected (0.00 sec)

[参考サイト]

d.hatena.ne.jp

nothing-titile.hatenablog.jp

gitpub.hatenablog.com

qiita.com

qiita.com

tech.katsubemakito.net

www.ketsuago.com

d.hatena.ne.jp

qiita.com

qiita.com

MySQLオプション(/etc/my.cnf)の設定例 | EasyRamble

my.cnfの設定例 | OpenGroove

qiita.com

qiita.com

qiita.com

qiita.com

tech-outlines.hateblo.jp

program-oosugi.hatenablog.com

easyramble.com

www.checksite.jp

qiita.com

qiita.com

www.mk-mode.com

yum実行中にエラー「Warning: RPMDB altered outside of yum.」が発生した場合の対処

yumでcmakeとncurses-develをインストール実行中の最後

にタイトルのWarningが発生して、Errorじゃないけど普通、

Warningレベルのものは見ないので対応しとこうと思って

調べてみた(ΦωΦ)

内容的にローカルとリポジトリの内容が同期されてない

のが問題っぽい。

[手順]

1.下記コマンドを実行し、同期。

#  yum history sync

※実行後、最後にhistory syncと出力されればOK。  

[参考サイト]

pontalean.blog.fc2.com

kometchtech.blog.fc2.com

serverfault.com

CentOS6.5に再インストールしたMySQL 5.6.40がyumでアンインストールできなくて、やったこと

再インストールしただけなのに、mysqldが起動できない上に前回、

見たことないエラーが大量に発生して訳わからんけど、調査しない

ことには何もやることないからってことで、オプションファイル

の設定等いろいろ調べて、設定して再起動とかもやってみたけど

動かないよ、何でやー?(ΦωΦ;)

仕方ないので、じゃぁまたデータ削除から再インストールをやり直すか

と思って、yumでアンインストールを実行しようとしたら、削除が

できない!!!はー???(ΦωΦ;)

だったのが、昨日の夕方。

それから、何をしてアンインストールまでこぎつけたか?

についてメモしておく。

[やったこと]

1. 既にないリポジトリを検索しようとしてタイムアウトしてたので、

 fastmirrorをオフに設定。

# vim /etc/yum/pluginconf.d/fastestmirror.conf

[main]

enabled=0

2. /etc/yum.repos.d/以下の設定ファイルのmirrorlistをコメントアウトして、

 baseurlをコメントイン。

(ex) CentOS-Base.repo [base]

# vim /etc/yum.repos.d/CentOS-Base.repo

#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os

baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

3. キャッシュクリア。

(ex)fastestmirror

# rm -rf /var/cache/yum/x86_64/6/timedhosts.txt

(ex)エラーが発生していたextrasリポジトリのrepodata以下の

 数字名のファイル

# rm -rf /var/cache/yum/x86_64/6/extras/944*

(ex)yum

# du -sh /var/cache/yum

# yum clean all

※念のため、updateを実行してみる

# yum update

4. 有効なリポジトリのリストとステータスを確認。

# yum repolist

# yum repolist all

5. アンインストール実行。

# yum remove mysql-community*

6. データ全削除。

# rm -rf /var/lib/mysql/

[参考サイト]

yumまとめ

qiita.com

d.hatena.ne.jp

qiita.com

opensourcetech.hatenablog.jp

shain.blog.conextivo.com

tweeeety.hateblo.jp

https://oxynotes.com/?p=6777

sig9.hatenablog.com

tkuchiki.hatenablog.com

yumのアップデートがうまくいかない場合にキャッシュをクリア – CentOSサーバ構築術 文具堂

 

大人の事情でCentOSを強要してはいけないと思う

仕事先で使用しているCentOS 6.5に不具合のあるMySQL

アンインストールして再インストールしたところ、方法が

間違っていたらしく、MySQLが起動しないので何もできない

という状況に陥って、設定ファイルの修正など調べないといけない

ことがたくさんあり何も作業が進まない事態になった。

CentOSが重用されるのは、RedHat系の有料サポートが受けられる

からなのかもしれない。

でも、開発環境構築が本当に面倒だし動作保証がない。

運用環境はCentOSで構築すればいいと思うけど、開発環境は

他のLinuxを使わせてほしいと思った。

枯れてるにも程があるだろう。

アホなのか?(ΦωΦ)

MySQLは途中で不具合が発生したものと同じバージョンだけど

取り出し元のパッケージのバージョンが違ったので、より改良された

ものがインストールされたという可能性はあると思う。

何せ、同じバージョンなのに、MySQLが起動しないし、起動時に

前回見たことのない大量のエラーログを吐いていたし。

インストールができても起動しないことには全くお話にならないし。

あー。どうして障害が発生する時は全部重なるんだ?

訳がわからん。

yumに追加したmysql57-communityからmysqlをインストールしようとして[Errno 256] No more mirrors to try

開発サーバーのmysql 5.6で不具合があり、アンインストール後に

再インストールを始めようとしたけど、一向に、mysqlのインストール

までに到達せず、それ以前で時間がかかってタイムアウト後に

エラーになったりしたので、/etc/yum.confに タイムアウト時間を増や

す設定を追加したり、キャッシュクリアしてみたり、いろいろしたけど

相変わらずで進捗がない、しぬーwww(ΦωΦ;)

って思っていたら、前回の環境構築後にセキュリティ設定がかけられて

いたことと、CentOS6.5の各リポジトリが古くなって削除されてる

とこを見に行って見つからなくてタイムアウトでコケていたらしい。

世間的にはCentOS7.xに移行しろよって流れだと思う。

わしもローカルのVM環境は7系の最新が入ってるから、そう思うけど

なかなか企業の情シス的にはサポートあるんだから、わざわざ

アップデートする必要ないとかアップデートしたら動かなくなる

環境もあるからってことで早急には対応しなくてもいい。

っていう大人の事情が働いてる現場が多そうだw

[手順]

 1. 古いyumのキャッシュを確認。

# du -sh /var/cache/yum
67M /var/cache/yum

2. キャッシュを全削除。

# rm -rf /var/cache/yum/*

# yum clean all

3. updateしてリポジトリリストが正常か確認。

# yum update

# yum repolist

4. 特にエラーが発生しなければOK。

[参考サイト]

qiita.com

http://www.cheebacca.jp/index.php/yum-no-more-mirrors-to-try/

server.etutsplus.com

yum が [Errno 256] No more mirrors to try エラーを返す - Red Hat Customer Portal

Why does yum return error: [Errno 256] No more mirrors to try ? - Red Hat Customer Portal

mysql_secure_installationについて

リモートサーバーからmysqlクライアントにrootでアクセスできない件

で思い出したことがあった。

ローカルのVMにインストールしてた時のように何も考えず、

mysql_secure_installationを実行して、rootユーザーのリモート

ログイン禁止でYを実行していたので、ローカルから外部の

開発サーバーのmysqlクライアントにrootでログインしようとして、

エラーになっていたということを思い出したw(ΦωΦ;)

まぁ、それはいいとして(良くないけどw)。

では、なぜNavicatでアクセスする場合もエラーなのか?

自分は、金曜日に仕事をしてる時まで問題なく接続できて

いたのに、何で今日はダメなんだ?って思う。

本当に意味がわからない。全社的な障害が発生していた影響

なのか?それとも別の問題なのか?よくわからないけど、

とりあえず、mysql_secure_installationの本体は見つけることが

できた。でも、いろいろ検索しているのに解除する方法は

アンインストール -> 再インストールで何とかする他ないっぽい。

というか今まで大丈夫だったのに、何でアクセスできなく

なったのかって疑問だけが残る。何でだろう?(ΦωΦ)

仕様が変わってrootでアクセスするようになったではないと

思うしな・・・思うけど、思ってるだけでそうなの?

とりあえずあとで調べるとして、参考サイトはメモしておく。

[参考サイト]

qiita.com

qiita.com

Secure a MySQL installation using mysql_secure_installation « Networking How To's

www.digitalocean.com

www.itzgeek.com

MySQL でrootのパスワードをリセットする方法

3連休明けに出勤してみたら、全社全体の障害が

発生した影響などを受けて、自分の開発サーバー

MySQLにNavicat(Windows向けGUImysql

(クライアント)でアクセスできなくなるエラーが

発生したので、黒い画面でmysqlクライアントに

アクセスできるかどうか確認したりしていたが、

本格的に調べようとするとrootのパスワードが必要

ということで、アクセスしてみたら、どういう訳か?

ユーザーでアクセスは問題ないのに、rootでアクセス

しようとするとエラーが発生して無理だった。

なので、rootパスワードが違うんだっけ?

と思い、rootパスワードのリセットを調べてみた(ΦωΦ)

[手順]

1. 実行中のMySQLを停止。

% sudo service mysqld stop

2. MySQLをセーフモードで起動。

% sudo mysqld_safe --skip-grant-tables &

3. MySQLへrootでパスワード無しでログイン。

% mysql -u root

4. rootのパスワードをリセット。

mysql > use mysql;

mysql > UPDATE user SET password=PASSWORD(設定したパスワードを""内に) WHERE USER = 'root';

mysql > Flush privileges; 

※上記実行後に「Query ok」が出力されればOK。

5. セーフモードで起動したMySQLからログアウト。

mysql > quit;

6. セーフモードで起動したMySQLを停止。

% sudo service mysqld stop

7. 通常モードでMySQLを再起動。

% sudo service mysqld start

8. 再度、4で変更したパスワードでログインできる

 か確認。

※結局、2のセーフモードで起動でエラーが発生して

 実行できなかったので断念したが、改めて実行したら

 何のエラーも発生せずrootでログインできたし、

 Navicatも問題なくアクセスできるようになったので、

 全社全体の障害からの反映が遅れていただけだった

 っぽい。自分は担当者じゃないので、詳しくは知らん

 けどw(ΦωΦ)

[参考サイト]

https://liginc.co.jp/web/programming/mysql/87393/2

stackoverflow.com

blog.dreamhive.co.jp

gist.github.com

www.sasukepg.jp