docker を使用して mysql5.7 を centos にインストールし、Python を使用してローカルにアクセスします。

1、参考

1. Docker インストール MySQL 5.7 (非常に詳細なテキストと画像の説明と MySQL 構成)

2. docker に mysql5.7 をインストールするチュートリアル

3. centos7 に mysql5.7 をインストールする手順 (図解版)

Linux で mysql5.7 がどのようにインストールされ構成されているかを理解するには、参考資料 3 をよく見てください。Docker で mysql5.7 を使用し、いくつかの基本的な問題を回避するための参考資料となります。

2.ドッカーをインストールする

参考:1. centosでのdockerインストールに関するDocker公式サイト

2. Docker が Alibaba Cloud イメージ アクセラレーションを構成する

3. docker を使用して MySQL5.7 をインストールし、リモート アクセスに Python を使用します。

1) mysql5.7 イメージをダウンロードします。

#dokcer pull 镜像名:版本号
docker pull mysql:5.7.34

2) ホストディレクトリを設定する

# 宿主机创建数据存放目录映射到容器
mkdir -p /usr/local/docker_data/mysql/data

# 宿主机创建配置文件目录映射到容器 
mkdir -p /usr/local/docker_data/mysql/conf #(需要在此目录下创建"conf.d"、"mysql.conf.d"两个目录)
mkdir -p /usr/local/docker_data/mysql/conf/conf.d # (在此目录创建my.cnf文件并进行相关MySQL配置)
mkdir -p /usr/local/docker_data/mysql/conf/mysql.conf.d

# 宿主机创建日志目录映射到容器
mkdir -p /usr/local/docker_data/mysql/logs

3) mysql5.7を実行します。

docker run \
--privileged=true \
--name mysql5.7 \
-p 3315:3306 \
-e MYSQL_ROOT_PASSWORD=asd123456 \
-d \
-v /usr/local/docker_data/mysql/data:/var/lib/mysql \
-v /usr/local/docker_data/mysql/conf:/etc/mysql/ \
-v /usr/local/docker_data/mysql/logs:/var/log/mysql \
mysql:5.7.34

パラメータ

説明する

--privileged=true

コンテナに実際の root 権限を持たせます。そうでない場合、ディレクトリのマウントは失敗します。

–name mysql5.7

コンテナ名

-p 3315:3306

ポートマッピング(ホストポート:コンテナポート)

-e MYSQL_ROOT_PASSWORD=asd123456

コンテナ環境変数(rootアカウントの初期化パスワード)

-d

バックグラウンドでコンテナを実行する

-v /usr/local/docker_data/mysql/data:/var/lib/mysql

コンテナ MySQL データ ディレクトリ マッピング (ホスト:コンテナ)

-v /usr/local/docker_data/mysql/conf:/etc/mysql/

コンテナ MySQL 構成ディレクトリ マッピング (ホスト:コンテナ)

-v /usr/local/docker_data/mysql/logs:/var/log/mysql

コンテナ MySQL ログ ディレクトリ マッピング (ホスト:コンテナ)

mysql:5.7.34

Docker イメージを指定します (イメージ名またはイメージ ID を指定できます)

4) mysql5.7の実行状況を確認する

docker ps
#如果启动失败,可以执行以下命令查看容器运行日志来排查
# docker logs --tail=行数 容器名称
docker logs --tail=100 mysql5.7

5) Python を使用してデータベースに接続します

1. サーバー セキュリティ グループがポート 3315 を開いていることを確認します。
2. pycharm に基づくローカル Python 環境の構成については、 Windows、pycharm、python、PyMySQL、mysql、およびアプリケーションのケース を参照してください。第 2 章
は、次の図に示されています。データベースへのリンクは成功しました。

6) mysql と入力し、アカウントを作成します。

mysql 権限の詳細については、「 MySQL View ユーザー権限と権限管理」を参照してください。
docker exec -it mysql5.7 bash
mysql -u root -p
# 创建用户并开启远程登录
CREATE USER 'testaccount'@'%'  IDENTIFIED BY 'jkl123456';
# 创建数据库并设置字符集
CREATE DATABASE `test_database` CHARACTER SET 'utf8mb4';
# 给账号授权数据库
GRANT ALL PRIVILEGES ON test_database.* TO 'testaccount'@'%';
FLUSH PRIVILEGES;

7) Python を使用してデータテーブルを作成し、それにアクセスします

8) データベースの保管状況を確認する

cd /usr/local/docker_data/mysql/data
ls
#可以看到服务器本地数据库已经建立了

9) ルートリモートアクセスを無効にする

まず、docker の下で mysql 環境に入る必要があります
#查看所有用户(用户名、给谁授权)
SELECT user,host FROM mysql.user;

#打印信息如下
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| root          | %         |
| testaccount   | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
#说明root用户已经有本地访问权限,以及远程连接权限
#需要删除远程连接权限的用户
drop user 'root'@'%';

#再查看
SELECT user,host FROM mysql.user;
#打印信息如下
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| testaccount   | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
#说明root远程连接功能已经删除了

--------更新中....------

————以下は整理対象のプロセス情報です——————

5.

参考

  1. dockerでmysql5.7イメージを作成する詳細説明

  1. mysql 公式ウェブサイト: Linux に mysql をインストールする方法

  1. 準備する

  1. centos を再インストールして、centos 環境がクリーンであることを確認します。

  1. MySQL5.7をcentos7にインストール

  1. 参考:centos7にmysql5.7をインストールする手順

  1. mysql5.7をダウンロードし、xftp を使用してサーバー/ツール ディレクトリにアップロードします(注: xftp だけではサーバーに接続できない場合がありますが、以下に示すように、xshell から xftp を開くとサーバーに接続できます)

  1. mysqlがシステムにインストールされているかどうかを確認します

  1. centos7に付属のmariadbをアンインストールします

  1. mysql ユーザーグループがインストールされているかどうかを確認し、インストールされていない場合は、mysql ユーザーとグループを作成して、mysql インストール ディレクトリ ファイルの所有者とグループを設定します。

1.useradd -r は、mysql ユーザーがシステム ユーザーであり、システムへのログインに使用できないことを意味します。2.
useradd -g は、mysql ユーザーが mysql ユーザー グループに追加されることを意味します。
  1. mysql 圧縮パッケージの解凍と関連操作

#解压,移动到/mysql/目录下,并重命名为mysql5.7
cd /tool
ls 
tar -zxvf mysql-5.7.41xxx-x86_64.tar.gz
mv mysql-5.7.41xxx-x86_64/ /mysql/mysql5.7
  1. mysql5.7のユーザーグループと権限を変更する

#设置/mysql/mysql5.7目录及以下目录的所有者为mysql组的mysql用户
cd /mysql/mysql5.7
chown -R mysql:mysql /mysql/mysql5.7
#设置权限
chmod -R 755 /mysql/mysql5.7
#查看权限
ls -l
  1. 必要なフォルダーを作成する

cd /mysql/mysql5.7
mkdir tmp log data
  1. 依存関係をインストールする

yum -y install libaio
  1. mysql をコンパイル、インストール、初期化します。下の図の赤いボックスに示すように、データベース管理者の一時パスワードを必ず覚えておいてください。

cd /mysql/mysql5.7/bin
#--user 启动mysql的用户 --basedir mysql 的安装目录--datadir mysql数据仓库目录
./mysqld --initialize --user=mysql --basedir=/mysql/mysql5.7 --datadir=/mysql/mysql5.7/data 
  1. etcディレクトリにmy.cnf設定ファイルを書き込み、設定項目を追加し、認証します。

vi /etc/my.cnf

#以下为my.cnf文件内容
[mysqld]
port = 3306
basedir = /mysql/mysql5.7
datadir = /mysql/mysql5.7/data
#my.conf文件内容结束

#授权
chmod -R 775 /etc/my.cnf
  1. mysql5.7/support-files/ ディレクトリ内の mysql.server ファイルを変更し、デフォルトのインストール場所 /usr/local/mysql を /mysql/mysql5.7 (basedir、datadir、bindir、sbindir、libexecdir、total を含む) に変更します。 5項目)

cd /mysql/mysql5.7/support-files
vi mysql.server
#修改:basedir, datadir, bindir, sbindir,libexecdir,共5项
  1. ソフト接続を追加し、mysql サービスを開始します

ln -s /mysql/mysql5.7/support-files/mysql.server /etc/init.d/mysql
ln -s /mysql/mysql5.7/bin/mysql /usr/bin/mysql
service mysql start
ps -ef|grep mysql
  1. mysql にログインします。パスワードは初期化中に生成された一時的なパスワードです。

mysql -u root -p
  1. パスワードを 123456 に変更します

set password for root@localhost = password('123456');
  1. mysqlデータベースへのリモート接続を開く

mysql 権限の詳細については、「 MySQL View ユーザー権限と権限管理」を参照してください。
use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;
  1. mysql サービスを再起動します。リモート接続するには、mysql サービスを再起動する必要があります。

#退出mysql环境
exit;
#重启mysql服务
service mysql restart
  1. 起動時に自動起動を設定する

#将服务文件拷贝到init.d下,并重命名为mysql
cp /mysql/mysql5.7/support-files/mysql.server /etc/init.d/mysqld
#赋予可执行权限
chmod +x /etc/init.d/mysqld
#添加服务
chkconfig --add mysqld
#显示服务列表
chkconfig --list
  1. ポート3306を開く

#开放3306端口命令
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#配置立即生效
firewall-cmd --reload
  1. navicat を使用してローカル接続が成功したかどうかをテストする

  1. pymysqlを使用してデータベースに接続します

  1. ドッカーのインストール

MySQL データベースにリモート接続する

  1. 参考: Navicat が MySQL サーバーにリモート接続する

  1. 参考:無料トライアルガイド | Navciat 16 データベース管理ツール

  1. 参考

エラー処理:
mysqld: '/etc/mysql/conf.d/' のディレクトリを読み取れません (エラーコード: 2 - そのようなファイルまたはディレクトリはありません
インストール手順:
Docker に mysql をインストールするための非常に詳細な手順
Docker で Mysql をインストールして使用します

3. MySQL5.7イメージをダウンロードする

MySQL5.7イメージをダウンロード

docker pull mysql:5.7

ダウンロードが完了したかどうかを確認する

docker images

MySQL5.7の実行

docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/var/log/mysql  -v /mysqldata/mysql/data:/var/lib/mysql  -v /mysqldata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root   mysql:5.7

上記のコマンドの意味は次のとおりです。

docker run : docker でコンテナー インスタンスを開始します

-d : コンテナはバックグラウンドで実行されます

-p 3306:3306 : コンテナとホスト間のマッピング ポートは 3306 (ホスト ポート、つまり、外部から mysql に接続するために使用されるポート番号): 3306 (コンテナ ポート)

--name mysql : 実行後のコンテナの名前

-v /mysqldata/mysql/log:/var/log/mysql : コンテナの /var/log/mysql ディレクトリ内のデータをホストの /mysqldata/mysql/log ディレクトリにバックアップします

-v /mysqldata/mysql/data:/var/lib/mysql : コンテナの /var/lib/mysql ディレクトリ内のデータをホストの /mysqldata/mysql/data ディレクトリにバックアップします

-v /mysqldata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下

-e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root

mysql:5.7:需要运行的容器名称以及版本号

通过此处-v 命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动重主机加载到容器当中

附录:错误处理

附1:mysql容器自动退出

运行如下命令

docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/var/log/mysql  -v /mysqldata/mysql/data:/var/lib/mysql  -v /mysqldata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root   mysql:5.7
docker ps

发现mysql容器并未运行,查看log

#获取mysql容器id
docker ps -a
#查看mysql容器log
docker logs mysql容器id

因此错误原因为没有读取到conf.d文件,因此按照参考文件,先

おすすめ

転載: blog.csdn.net/chenjie05/article/details/129342641