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

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

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

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

MySQL

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

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

解決済

Docker CentOS7 MySQL rootのPW設定とユーザー作成

suvera
suvera

総合スコア0

CentOS

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

MySQL

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

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

2回答

0評価

0クリップ

3158閲覧

投稿2016/08/30 09:46

編集2022/01/12 10:58

###前提・実現したいこと
Docker の CeontOS7 のイメージから作成したコンテナにMySQLをインストールしました。
これをDBとして仮運用し、外部からも接続できるようにしたいです。

外部から扱うためにユーザーを作成しようと思った段階で躓いています。
rootのパスワードは設定したものになっていてそれでmysqlに入ることができます。
ですが新しいユーザーを作ることろでエラーが出ています。

###発生している問題・エラーメッセージ

下記のシェルスクリプトを実行した時のエラー

-== Complete Install ==- mysqld Ver 5\.7\.14 for Linux on x86_64 \(MySQL Community Server \(GPL\)\) mysql: \[Warning\] Using a password on the command line interface can be insecure\. Please use --connect-expired-password option or invoke mysql in interactive mode\. \[root@6034835b0dda /\]#

mysqlUserSetting.sqlの実行行をコメントアウトしてシェルスクリプトを実行し、
手動でmysqlにrootで入ってユーザーを作成しようとすると以下のようになりました。

\[root@5b3fbe7c80df /\]# mysql -u root -p Enter password: Welcome to the MySQL monitor\. Commands end with ; or \\g\. Your MySQL connection id is 2 Server version: 5\.7\.14 Copyright \(c\) 2000, 2016, 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> CREATE USER mysqluser; ERROR 1820 \(HY000\): You must reset your password using ALTER USER statement before executing this statement\. mysql>

###該当のソースコード

コンテナは以下のように作成しました。
\$ docker run --privileged -d -P -i -t -p 3306:3306 --name db_server -v ホストパス:/app_db centos /sbin/init

接続は以下のように行っています。
\$ docker exec -it db_server /bin/bash

コンテナ作成後、接続して/app_db以下に入っているシェルスクリプトを実行しています。

#!/bin/sh # vim yum -y install vim-enhanced # mysql yum -y localinstall http://dev\.mysql\.com/get/mysql57-community-release-el7-7\.noarch\.rpm yum info mysql-community-server yum -y install mysql-community-server systemctl enable mysqld\.service systemctl restart mysqld echo " -== Complete Install ==-" mysqld --version # Allow access without pw to mysql echo 'skip-grant-tables' >> /etc/my\.cnf systemctl restart mysqld\.service mysql -u root < /cha_db/mysqlResetRootPw\.sql # del last line \(skip-grant-tables\) sed -i -e '\$d' /etc/my\.cnf systemctl restart mysqld\.service mysql -u root -pdevmysql < /app_db/mysqlUserSetting\.sql

mysqlResetRootPw.sqlの中身

SQL

use mysql UPDATE user SET authentication_string=password\('devmysql'\) WHERE user='root'; flush privileges;

mysqlUserSetting.sqlの中身

SQL

CREATE USER mysqluser; CREATE USER mysqluser IDENTIFIED BY \[PASSWORD\] 'devmysql'; SELECT user,host FROM mysql\.user;

systemctl mysqld -h の結果

\[root@0a64ed3de470 /\]# systemctl mysqld -h systemctl \[OPTIONS\.\.\.\] {COMMAND} \.\.\. Query or send control commands to the systemd manager\. -h --help Show this help --version Show package version --system Connect to system manager -H --host=\[USER@\]HOST Operate on remote host -M --machine=CONTAINER Operate on local container -t --type=TYPE List units of a particular type --state=STATE List units with particular LOAD or SUB or ACTIVE state -p --property=NAME Show only properties by this name -a --all Show all loaded units/properties, including dead/empty ones\. To list all units installed on the system, use the 'list-unit-files' command instead\. -l --full Don't ellipsize unit names on output -r --recursive Show unit list of host and local containers --reverse Show reverse dependencies with 'list-dependencies' --job-mode=MODE Specify how to deal with already queued jobs, when queueing a new job --show-types When showing sockets, explicitly show their type -i --ignore-inhibitors When shutting down or sleeping, ignore inhibitors --kill-who=WHO Who to send signal to -s --signal=SIGNAL Which signal to send --now Start or stop unit in addition to enabling or disabling it -q --quiet Suppress output --no-block Do not wait until operation finished --no-wall Don't send wall message before halt/power-off/reboot --no-reload Don't reload daemon after en-/dis-abling unit files --no-legend Do not print a legend \(column headers and hints\) --no-pager Do not pipe output into a pager --no-ask-password Do not ask for system passwords --global Enable/disable unit files globally --runtime Enable unit files only temporarily until next reboot -f --force When enabling unit files, override existing symlinks When shutting down, execute action immediately --preset-mode= Apply only enable, only disable, or all presets --root=PATH Enable unit files in the specified root directory -n --lines=INTEGER Number of journal entries to show -o --output=STRING Change journal output mode \(short, short-iso, short-precise, short-monotonic, verbose, export, json, json-pretty, json-sse, cat\) --plain Print unit dependencies as a list instead of a tree Unit Commands: list-units \[PATTERN\.\.\.\] List loaded units 以下略

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

CentOS

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

MySQL

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

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです