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

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

ただいまの
回答率

90.42%

  • MySQL

    6354questions

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

  • CentOS

    2879questions

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

mysql5.7.11 起動ログについて

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 8,900

kumakumatan

score 138

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」と表示されて、アップグレードできませんでした。

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ogaaaan

    2016/03/10 17:51

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

    キャンセル

  • 退会済みユーザー

    2016/03/10 17:51

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • dupont_kedama

    2016/03/11 11:56

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

    キャンセル

回答 2

+2

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

この質問は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 14:47

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

    キャンセル

  • 2016/03/14 09: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」を実施した方がよろしいでしょうか?

    宜しくお願いします。

    キャンセル

  • 2016/03/14 09:48

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

    キャンセル

  • 2016/03/14 11:22

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

    キャンセル

checkベストアンサー

0

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

初期化Shell
mysql_install_db --datadir=/var/lib/mysql --user=mysql

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/03/11 11: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を違う場所に退避させたのですが、
    表示されてしまいます。

    キャンセル

  • 2016/03/11 12:33

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

    キャンセル

  • 2016/03/11 13: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」が必要なのでしょうか?

    キャンセル

  • 2016/03/11 13:26

    Linux系では必要だったと思います。

    間違ってたらすみません(笑)

    詳細は以下の参照してください。

    https://dev.mysql.com/doc/refman/5.6/ja/mysql-install-db.html

    キャンセル

  • 2016/03/11 13: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」も起動されるという認識でよろしいでしょうか?

    以上、お手数おかけしますが宜しくお願いします。

    キャンセル

  • 2016/03/11 13:52

    アップグレードだったんですね…笑

    問題なくアップグレードされたと思います。
    バージョン確認
    mysql> SELECT version();

    mysql.pluginは「データベース名.テーブル名」だと思いますが

    mysqlデータベースの中にpluginテーブルはないのでしょうか?

    mysql> use mysql;
    mysql> show tables;

    キャンセル

  • 2016/03/11 14:44

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

    宜しくお願いします。

    キャンセル

  • 2016/03/11 15:01

    >MySQLデータベースとの通信をSSL暗号化する設定がない為でしょうか?
    はい。そうです。

    個人的な意見になりますが…
    MySqlサーバとやり取りするところが(WEBサーバ、レプリケーション等)
    内部IPもしくはローカルでの接続になっているのであれば不要かと思います。

    ほかの方の意見も併せてご確認いただければと思います。

    キャンセル

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

  • ただいまの回答率 90.42%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • MySQL

    6354questions

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

  • CentOS

    2879questions

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