質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

2回答

23500閲覧

mysql5.7.11 起動ログについて

kumakumatan

総合スコア213

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2016/03/09 01:20

編集2016/03/11 02:01

CentOS6.5/MysqlServer5.7.11

にて、mysqlを起動させる際、起動自体はできるのですが、「mysql_error.log」にて
以下2行のエラー出力が表示されてしまいます。

[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
[ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist

そのエラー内容を調べてみると、「 mysql_upgrade -u root -p」と入力してアップグレードしなさい
というサイトを見つけて試みたのですが、「1146:Table 'mysql.plugin' doesn't exit」と表示されて、アップグレードできませんでした。

このログエラーを回避するにはどうしたらよろしいいでしょうか?
またこのエラーを回避しないとどのような影響がありますでしょうか?

ご教授、宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ogaaaan

2016/03/10 08:51

『1146:Table 'mysql.plugin' doesn't exit』←これの意味はしらべたのかな? 自分でできることはやっておかないと誰も答えてくれないよ。
dupont_kedama

2016/03/11 02:56

バージョンアップをしているなら、「前のバージョン」「バージョンアップ(インストール)手順」を書いた方がいいです。 あと、現在のmysqldの起動オプションも記載してください。
guest

回答2

0

あらぬ方向に進んでしまうことがないよう、一応別で回答します。

この質問はmy.cnfの設定についての続きですよね?
その回答の中で「旧バージョンのデータを引き継いでますか?そうだとして「mysql_upgrade」をしてますか? 」と書きました。
今回は旧バージョンのデータを引き継ぐために「mysql_upgrade」をしようとされたと考えます。
(その前提にないならそもそもmysql_upgradeをする必要はありません。)

「mysql_install_db」は初期化する(初期データと初期ユーザーを作るなど)ためのコマンドであり、旧データを(ディレクトリごと)引き継ぐ場合は不要です。
なおMySQL5.7では「mysql_install_db」は非推奨であり、「mysqld --initialize」を使うべきです。
2.10.1.1 Initializing the Data Directory Manually Using mysqld

先ほど初期化されたデータに対して「mysql_upgrade」していますが、これは意味がありません。
すでに5.7に最適化されているからです。

さて、当初発生していた「Table 'mysql.plugin' doesn't exit」は「mysqlスキーマのpluginテーブルが見つかりません」という意味です。このテーブルは(ものすごく古いバージョンにはなかったかもしれませんが、)MySQL5.5にはすでにありました。
「mysql_upgrade」コマンドがそのテーブルを見つけられなかった理由は、情報が不足していてわかりません。
(前のバージョンはなんなのか、前のバージョンはアンインストール済なのか、「mysql_upgrade」は正しいmy.cnfを見ているのか、などなど。)
なので情報の追加依頼を書きました。
MySQL5.7をインストールするときに参考にしたサイト・資料などあればそれも提示された方がよいかと思います。

「mysql.plugin」はファイルとしては存在しないのでしょうか?

少なくとも /データディレクトリ/mysql/plugin.frm などがあるはずです。

投稿2016/03/11 05:14

編集2016/03/11 05:27
dupont_kedama

総合スコア925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kongbab04

2016/03/11 05:47

ありがとうございます! 大変勉強になりました
kumakumatan

2016/03/14 00:28

コメントありがとうございます。旧バージョンが入ってはいないかと思いますが、 参考サイト http://blog.ybbo.net/2015/03/11/how-to-install-mysql5-7-to-centos6-using-yum/ http://qiita.com/ShuM/items/1a960b4ef53f8a08dd5a を参考にして、 yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm yum install yum-utils yum-config-manager --disable mysql56-community yum-config-manager --enable mysql57-community-dmr yum install mysql mysql-devel mysql-server mysql-utilities rpm -qa|grep mysql mysql --version にてインストールしました。 もう一度、DBを空にして、「mysqld --initialize --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql」を実施した方がよろしいでしょうか? 宜しくお願いします。
dupont_kedama

2016/03/14 00:48

「旧データを引き継ぐ」のではないのですね? であれば一度「mysql_install_db」をしているのでそのまま使って問題ないと思います。
kumakumatan

2016/03/14 02:22

ありがとうございました。 大変勉強になりました。
guest

0

ベストアンサー

データベースは初期化したのですか?

初期化Shell

mysql_install_db --datadir=/var/lib/mysql --user=mysql

投稿2016/03/11 02:05

kongbab04

総合スコア53

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumakumatan

2016/03/11 02:26

ご回答ありがとうございます。試したのですが、 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize [ERROR] The data directory '/var/lib/mysql' already exist and is not empty. と表示されてしまいます。 ibdata1/ib_logfile0/ib_logfile1/自身で作成したDBを違う場所に退避させたのですが、 表示されてしまいます。
kongbab04

2016/03/11 03:33

/var/lib/mysql がすでに存在しているようですが、 削除してもう一度試すか datadirをほかのディレクトリにしてみてください。 /usr/local/mysql/data 等
kumakumatan

2016/03/11 04:06

ご回答ありがとうございます。 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize [WARNING] The bootstrap log isn't empty: [WARNING] 2016-03-11T02:46:01.125351Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead [Warning] Changed limits: max_open_files: 1024 (requested 5000) [Warning] Changed limits: max_connections: 214 (requested 500) と表示されて、起動ログを確認すると、error項目がなくなりました。 mysqlserverをインストール後は最初に、「mysql_install_db --datadir=/var/lib/mysql --user=mysql」が必要なのでしょうか?
kumakumatan

2016/03/11 04:32

追記です。 その後、「mysql_upgrade -u root -p」とすると、 Checking if update is needed. Checking server version. Running queries to upgrade MySQL server. Checking system database. mysql.columns_priv OK mysql.db OK mysql.engine_cost OK mysql.event OK mysql.func OK mysql.general_log OK mysql.gtid_executed OK mysql.help_category OK mysql.help_keyword OK mysql.help_relation OK mysql.help_topic OK mysql.innodb_index_stats OK mysql.innodb_table_stats OK mysql.ndb_binlog_index OK mysql.plugin OK mysql.proc OK mysql.procs_priv OK mysql.proxies_priv OK mysql.server_cost OK mysql.servers OK mysql.slave_master_info OK mysql.slave_relay_log_info OK mysql.slave_worker_info OK mysql.slow_log 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.user OK The sys schema is already up to date (version 1.5.0). Checking databases. sys.sys_config OK Upgrade process completed successfully. Checking if update is needed. と表示されました。これは、正常にアップグレードできたという認識でよろしいでしょうか? また、「mysql.plugin」を調べてみると、「mysql.plugin テーブルはプラグインのレジストリの役割を担っています。サーバーは通常、テーブルにリストされている各プラグインを起動時に有効にします」と記載されていました。起動に必要なモジュールという認識でよろしいでしょうか? 「mysql.plugin」はファイルとしては存在しないのでしょうか?find / -name *mysql.plugin* と検索してもなかったです。mysqlのサービスが開始された状態で「mysql.plugin」も起動されるという認識でよろしいでしょうか? 以上、お手数おかけしますが宜しくお願いします。
kongbab04

2016/03/11 04:52

アップグレードだったんですね…笑 問題なくアップグレードされたと思います。 バージョン確認 mysql> SELECT version(); mysql.pluginは「データベース名.テーブル名」だと思いますが mysqlデータベースの中にpluginテーブルはないのでしょうか? mysql> use mysql; mysql> show tables;
kumakumatan

2016/03/11 05:44

ご回答ありがとうございます。 確認できました。 起動ログを確認したところ、「[ERROR] SSL error: Unable to get certificate from 'server-cert.pem'」 MySQLデータベースとの通信をSSL暗号化する設定がない為でしょうか?必要がなければ、無視してもいいのでしょうか? この設定は一般的には必要なのでしょうか。WEBサーバからの通信のみであれば無視してもいいものでしょうか? 宜しくお願いします。
kongbab04

2016/03/11 06:01

>MySQLデータベースとの通信をSSL暗号化する設定がない為でしょうか? はい。そうです。 個人的な意見になりますが… MySqlサーバとやり取りするところが(WEBサーバ、レプリケーション等) 内部IPもしくはローカルでの接続になっているのであれば不要かと思います。 ほかの方の意見も併せてご確認いただければと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問