Ubuntu 20.04 に MySql5.7 をインストールして構成するための詳細なチュートリアル

Ubuntu 20.04 に MySql5.7 をインストールして構成するための詳細なチュートリアル

1. Ubuntuソースの変更

Ubuntu 20.04 システムに付属するソースでは、MySQL 8.0 が直接インストールされます。MySQL 5.7 をインストールしたいので、まずはソースを変更します。

1.1 元のソースファイルをバックアップする

sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

1.2 ソースリストファイルを変更する

sudo vim /etc/apt/sources.list

私は清華ミラーソースを選択しました。 source.list の内容をクリアし、ソースを選択して source.list に貼り付け、ファイルを保存して終了します。

# 清華ミラーソース deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial メイン制限付き宇宙マルチバース
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial メイン 制限付き宇宙 マルチバース
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates メイン 制限付き宇宙 マルチバース
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates メイン 制限付き宇宙 マルチバース
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports メイン 制限付き宇宙 マルチバース
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports メイン 制限付き宇宙 マルチバース
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security メイン 制限された宇宙 マルチバース
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security メイン 制限付き宇宙 マルチバース

1.3 ミラーソースとソフトウェアの更新

# ミラーソースを更新する sudo apt-get update
# ソフトウェアを更新する sudo apt-get upgrade

2. MySQLをインストールする

2.1 apt-get install を使用したインストール

この方法ではサーバーがインターネットに接続されている必要があります

# 次のインストールコマンドを実行します # mysql5.7 サーバーをインストールします sudo apt-get install mysql-server-5.7

# mysql5.7 クライアントをインストールします sudo apt-get install mysql-client-5.7

# C/C++ などの言語を使用して、mysql ダイナミック リンク ライブラリを操作します。必要ない場合はインストールできます。sudo apt install libmysqlclient-dev

インストール中に、mysql ルート ユーザーのパスワードを 2 回入力する必要があります (このパスワードを覚えておく必要があります)


インストールが完了したら、MySQLのバージョンとサービスを確認してください。

mysql -V # mysql バージョンを表示 netstat -tap | grep mysql # mysql サービスを表示

上の写真はインストールが成功したことを示しています。

2.2 debインストールパッケージを使用したインストール

このインストール方法は、インターネット接続の有無にかかわらず使用できます。

以下のインストールに使用するパッケージは自分でダウンロードすることも、私がダウンロードしたものを使用することもできます。

リンク: https://pan.baidu.com/s/1lJq7hZH-X35f5gC-A-URiQ

抽出コード: gxfk

1) debインストールパッケージをダウンロードする

インストールパッケージはサーバーから直接入手するか、公式ウェブサイトからダウンロードすることができます。

# サーバーから直接取得します (サーバーはインターネットに接続されている必要があります)
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar をダウンロードします。

# ブラウザに URL を直接貼り付けて、インストール圧縮パッケージをダウンロードすることもできます https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar

公式 Web サイトにアクセスして自分でダウンロードし、MySQL バージョンとオペレーティング システムのバージョンを選択して [ダウンロード] をクリックします。

URL: https://downloads.mysql.com/archives/community/

2) debパッケージを使用してインストールする

ダウンロードしたmysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar圧縮パッケージを Linux サーバーにインポートし、次の操作を実行します。

# 新しいディレクトリを作成する mkdir mysql5.7.31
mv mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar ./mysql5.7.31

# 解凍 cd mysql5.7.31
sudo tar -vxf mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar

# 解凍された deb インストール パッケージは次のとおりです。
libmysqlclient20_5.7.31-1ubuntu18.04_amd64.deb
mysql-クライアント_5.7.31-1ubuntu18.04_amd64.deb
mysql-コミュニティソース_5.7.31-1ubuntu18.04_amd64.deb
mysql-server_5.7.31-1ubuntu18.04_amd64.deb
mysql-common_5.7.31-1ubuntu18.04_amd64.deb
mysql-テストスイート_5.7.31-1ubuntu18.04_amd64.deb
libmysqlclient-dev_5.7.31-1ubuntu18.04_amd64.deb
mysql-コミュニティクライアント_5.7.31-1ubuntu18.04_amd64.deb
mysql-コミュニティサーバー_5.7.31-1ubuntu18.04_amd64.deb
libmysqld-dev_5.7.31-1ubuntu18.04_amd64.deb
mysql-コミュニティテスト_5.7.31-1ubuntu18.04_amd64.deb

# テスト関連のパッケージ 2 つを削除します sudo rm -f mysql-testsuite_5.7.31-1ubuntu18.04_amd64.deb
sudo rm -f mysql-community-test_5.7.31-1ubuntu18.04_amd64.deb

dpkgでインストール

# dpkg でインストール sudo dpkg -i mysql-*.deb 

結果は間違っていました_^^

このエラーはlibtinfo5libmecab2 2 つのパッケージが不足していることを意味します。次に、これら 2 つのパッケージをインストールします。他のパッケージがまだ不足している場合は、以下の手順に従ってインストールします。

# サーバーがインターネットに接続できる場合は、直接インストールします sudo apt-get install libtinfo5
sudo apt-get でlibmecab2をインストールします

サーバーがインターネットに接続できない場合は、自分でダウンロードしてからサーバーにアップロードしてください

ダウンロードURL: https://ubuntu.pkgs.org/

# ソフトウェア パッケージをダウンロードするには、ハードウェア アーキテクチャを区別する必要があります [admin0@Ubuntu20:/home/admin0]$ uname -m # ハードウェア アーキテクチャ x86_64 を表示します # x86_64 は AMD64 です

バイナリ パッケージの URL をブラウザーにコピーしてダウンロードし、ダウンロードしたlibtinfo5およびlibmecab2パッケージをサーバーにインポートしてインストールします。

sudo dpkg -i libtinfo5_6.2-0ubuntu2_amd64.deb
sudo dpkg -i libmecab2_0.996-10build1_amd64.deb 

# dpkg cd mysql5.7.31 で再度インストールします
sudo dpkg -i mysql-*.deb

ルートパスワードを2回入力するよう求められたら、インストールは成功です

インストールが完了したら、MySQLのバージョンとサービスを確認してください。

mysql -V # mysql バージョンを表示 netstat -tap | grep mysql # mysql サービスを表示

上の写真はインストールが成功したことを示しています。

3. 新しいユーザーを作成し、権限を付与する

3.1 パスワードを設定していない場合、またはパスワードを忘れた場合はどうすればいいですか?

# mysqlサービスを停止します sudo service mysql stop

# MySQL のログイン設定を変更し、一時的にログインパスワードを検証しないようにする sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

# [mysqld] の下の "skip-external-locking" をコメントアウトします。 # "skip-grant-tables" を追加し、保存して終了します。 例:
================================================
[mysqld]
ユーザー = mysql
pid ファイル = /var/run/mysqld/mysqld.pid
ソケット = /var/run/mysqld/mysqld.sock
ポート = 3306
ベースディレクトリ = /usr
データディレクトリ = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
#外部ロックをスキップ
スキップ許可テーブル
=================================================

# mysqlデータベースを再起動します。sudo service mysql restart

# パスワードなしでmysqlデータベースにログインする mysql -u root mysql

# ルートパスワードを変更します。 update mysql.user set authentication_string=password('111222333') where user='root';

# 権限を更新します。

# MySQL ログイン設定を復元します # [mysqld] の下に追加された "skip-grant-tables" を削除します # "skip-external-locking" のコメントを解除し、保存して終了します sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
例えば:
================================================
[mysqld]
ユーザー = mysql
pid ファイル = /var/run/mysqld/mysqld.pid
ソケット = /var/run/mysqld/mysqld.sock
ポート = 3306
ベースディレクトリ = /usr
データディレクトリ = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
外部ロックをスキップ
=================================================

# mysqlデータベースを再起動します。sudo service mysql restart

# 新しいパスワードを使用してmysqlにログインします
mysql -u ユーザー名 -p パスワード データベース名# 例: 
mysql -uroot -p111222333 mysql

3.2 MySQLにログインして情報を表示する

# mysqlに直接ログインする
mysql -u ユーザー名 -p パスワード データベース名# 例: 
mysql -uroot -p111222333 mysql

# 最初にログインし、パスワードを入力してデータベースを選択します。mysql -u root -p
パスワードを入力してください: “rootユーザーパスワード”
mysql> use mysql # 操作するデータベースを選択 # データベースを切り替え use database name;

# すべてのデータベースを表示 show databases; 

# ログイン データベース内のすべてのテーブルを表示します。show tables; 

# データ テーブル構造を表示します。desc テーブル名;

# ログインユーザー名を表示します。 select user(); 

# ログインデータベース名を表示します。select database();

# バージョンを確認する select version();

# 現在の時刻を表示する now() を選択します。

# すべてのユーザーのユーザー名、ログイン ホスト、認証プラグイン、およびパスワードを表示します。 select user,host,plugin,authentication_string from user;

# 現在ログインしているユーザーの権限を表示します。show grants;

# 任意のユーザーの権限を表示します(権限の具体的な意味については後で説明します)
root@localhost の権限を表示します。

3.3 データベースとユーザーの作成と削除

# ルートユーザーを使用してデータベースにログインします mysql -uroot -p111222333 mysql

# データベースの作成 create database "データベース名" charset="データベースのエンコーディング";
# 例えば:
データベース pydb を作成します。charset=utf8;

# データベース ユーザーを作成します。create user "ユーザー名"@"IP アドレス" identified by "パスワード";
# 例えば:
'test0'@'localhost' という、'test0111' で識別されるユーザーを作成します。

# データを削除します drop database [データベース名];
# 例えば:
データベース pydb を削除します。

# データベースユーザーを削除します。drop user 'ユーザー名'@'IPアドレス';
# 例えば:
ユーザー 'test0'@'localhost' を削除します。

3.4 ユーザーへの権限の付与

# ユーザー test0 の権限を表示します。test0@localhost に権限を許可します。

表示: [GRANT USAGE ON *.* TO 'test0'@'localhost']
使用法: 権限のないユーザーを示します。

# pydbデータベースにユーザーtest0としてログインする mysql -utest0 -ptest0111 pydb

エラー メッセージは、操作が許可されていないことを示しています: [ERROR 1044 (42000): ユーザー 'test0'@'localhost' によるデータベース 'pydb' へのアクセスが拒否されました]

# ルート ユーザーを使用して、test0 ユーザーに権限を付与します。付与オプションを使用して、'データベース名'.'テーブル名' のすべての権限を、"パスワード" で識別される 'ユーザー名'@'IP アドレス' に付与します。

# たとえば、ローカル クライアントがこのユーザーにアクセスするように設定します。
mysql> 'test0'@'localhost' (識別名は 'test0111') に pydb.* のすべての権限を付与します (付与オプション付き)。

# 任意のリモート クライアントがこのユーザーにアクセスできるように設定します。
mysql> grant オプションを使用して、pydb.* のすべての権限を 'test0'@'%' に付与します。

# 権限を更新mysql> flush privileges;

# ローカル権限を表示 show grants for 'test0'@'localhost';
出力: [GRANT OPTION 付きで 'test0'@'localhost' に `pydb`.* のすべての権限を付与]

# リモート権限の表示 show grants for 'test0'@'%';
出力: [GRANT ALL PRIVILEGES ON `pydb`.* TO 'test0'@'%' WITH GRANT OPTION]
権限が正常に追加されました。これで、ローカル クライアントとリモート クライアントの両方に、test0 ユーザーにログインして pydb データベースの下にあるすべてのテーブルを操作する権限が与えられます。

# 認可コマンドの説明 grant: 認可キーワード all privileges: 認可タイプ。all privileges はすべての権限を意味します。選択、更新、作成、削除などの特定の権限を割り当てることもできます。
on: どのデータベースのどのテーブルに権限を付与するかを示します。 *.* はすべてのデータベースのすべてのテーブルを示します。
to: 権限を付与するユーザーを、「ユーザー名」@「ログイン IP またはドメイン名」の形式で示します。 localhost はローカル クライアントがこのユーザーにログインできることを意味し、% はどのホスト クライアントもこのユーザーにログインできることを意味します。'username'@'192.168.113' などの特定の IP アドレスが設定されている場合は、ホスト クライアント 192.168.113 のみがこのユーザーにログインできることを意味します。 'username'@'192.168.%'のようなIPセグメントを設定することもできます。
識別: このユーザーのログイン パスワードを設定するか、設定しないことも選択できます。
付与オプション付き: このユーザーが自分の権限を他のユーザーに付与できることを示します。
注: grant によって追加された権限は自動的に重ね合わされます。たとえば、最初に選択権限を追加し、次に挿入権限を追加すると、ユーザーには選択権限と挿入権限の両方が付与されます。ユーザーがすでにすべての権限を持っている場合に選択権限が追加されても、ユーザーには引き続きすべての権限が付与されます。

# 権限を削除します revoke insert on 'データベース名'.'テーブル名' from 'ユーザー名'@'IP アドレス';
# たとえば、挿入権限を削除するには:
'test0'@'localhost' からの pydb.* への挿入を取り消します。

# たとえば、すべての権限:
pydb.* の 'test0'@'localhost' からすべてを取り消します。

# 権限を更新mysql> flush privileges;

すべての権限には、[SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、REFERENCES、INDEX、ALTER、CREATE TEMPORARY TABLES、LOCK TABLES、EXECUTE、CREATE VIEW、SHOW VIEW、CREATE ROUTINE、ALTER ROUTINE、EVENT、TRIGGER] が含まれます。

実際の使用では、すべての権限を付与することは推奨されません。必要なものだけを付与してください。

権限の詳細については、MySQL の公式説明を参照してください: http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

3.5 ユーザー、データベース、テーブルの関係図

4. データベースのバックアップとリカバリ

# すべてのデータベースをバックアップします:
mysqldump -uroot -p --すべてのデータベース > all.db

# 指定されたデータベースをバックアップします:
mysqldump -uroot -p pydb > test1.db

# 指定されたデータベースのいくつかのテーブルをバックアップします。mysqldump -uroot -p pydb テーブル名 1 テーブル名 2 テーブル名 n > test2.db

# 特定のテーブルを除いて指定されたデータベースをバックアップします(テーブル1と2を除く)
mysqldump -uroot -p pydb --ignore-table=pydb.Table1 --ignore-table=pydb.Table2 > test3.db

# テストデータベースを作成します。create database test charset=utf8; 

# バックアップデータを復元します。インポートしたデータベースが存在している必要があります。mysql -u root -p test < test1.db

5. Navicatリモート接続データベース

5.1 ローカルリスニングアドレスを変更する

# 監視の表示 netstat -an |grep 3306
# 現在のリスニングアドレスはローカルループバックアドレスです: tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 
# リモートクライアントはアクセスできません # MySQLのローカルリスニングアドレスを変更します sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address の値を bind-address = 0.0.0.0 に変更し、ファイルを保存して終了します。
ローカル IP アドレスに変更することもできます。例: bind-address = 192.168.111.10

# mysqlデータベースを再起動します。sudo service mysql restart

# リモートクライアントマシンでネットワークをテストします。telnet が成功した場合、ネットワークは正常であることを意味します。telnet 192.168.111.10 3306

# 注意: Alibaba Cloud Server にはポート制限があります。ポート 3306 を開くにはポート アクセス ルールを設定する必要があります。URL: [https://homenew.console.aliyun.com/](https://homenew.console.aliyun.com/)

5.2 Navicatリモート接続

Navicat をダウンロードして自分でインストールしてください。

接続に失敗した場合は、次のテストを実行してください。
[192.168.111.10]はMySQLサーバのIPアドレスです。1.ネットワークとポートをテストします。telnet 192.168.111.10 3306

2. サーバーのリスニングアドレスを確認する sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
バインドアドレス = 0.0.0.0

3. ユーザーにリモート アクセス権があるかどうかを確認し、パスワード検証プラグインでユーザー、ホスト、ユーザーからプラグインを選択します。
ログインユーザーホストの値: % またはリモートクライアントIP
ログインユーザープラグインの値: mysql_native_password 
MySQL 5.7のパスワード検証プラグインはmysql_native_passwordです。 

# ユーザー アクセス権を追加し、パスワード検証プラグインを設定して、pydb.* のすべての権限を 'test0'@'%' に付与します ('test0111' によって mysql_native_password で識別されます)。

# ユーザーのリモート アクセス許可が存在し、パスワード検証プラグインが正しくない場合は、パスワード検証プラグインを変更することしかできません。 alter user 'test0'@'%' identified with mysql_native_password by '111222333';

# 権限を更新mysql> flush privileges;

6. mysqlをアンインストールする

# mysqlをアンインストールします:
1.sudo apt-get autoremove mysql* --purge
2.sudo apt-getでmysql-serverを削除します
3.sudo apt-getでmysql-commonを削除します

# 残留データをクリーンアップ sudo dpkg -l |grep mysql|awk '{print $2}' |sudo xargs dpkg -P 
sudo rm -rf /etc/mysql/ 
sudo rm -rf /var/lib/mysql

# 削除が完了したかどうかを確認します whereis mysql
sudo 検索 / -name mysql

このブログ記事に記載されている操作はすべて自分で行いました。困っている友人の助けになれば光栄です。間違いがあれば、遠慮なく訂正してください。

Ubuntu 20.04 への MySql5.7 のインストールと構成に関するこの記事はこれで終わりです。Ubuntu 20.04 への MySql5.7 のインストールの詳細については、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL 8.0.22 圧縮パッケージの完全なインストールと構成のチュートリアル図 (テスト済みで効果的)
  • MySQL 8.0.22.0 のダウンロード、インストール、設定方法のグラフィックチュートリアル
  • Windows 10 での MySQL 8.0.22 のインストールと設定方法のグラフィック チュートリアル
  • MySQL 8.0.22 winx64 のインストールと設定方法のグラフィックチュートリアル
  • MySQL 8.0.22 のダウンロード、インストール、設定方法のグラフィックチュートリアル
  • MySQLのインストールと設定に関する詳細なチュートリアル

<<:  js 正規表現の先読みと後読み、および非キャプチャグループ化

>>:  ベースリンクタグの使用の紹介ベース

推薦する

Tomcatの動作原理を分析する

SpringBoot は巨大な Python のようで、ゆっくりと私たちの周りを巻きつき、麻痺させま...

Vue+nodeはオーディオ録音・再生機能を実現

結果: コードロジックを実装するのが主な部分であり、具体的なページ構造を一つ一つ紹介することはありま...

モバイルでのHTML5経由のファイルアップロード

ほとんどの場合、PC でファイルをアップロードするにはプラグインが使用され、フラッシュが導入されても...

MySQL 時間差関数 (TIMESTAMPDIFF、DATEDIFF)、日付変換計算関数 (date_add、day、date_format、str_to_date)

1. 時間差関数(TIMESTAMPDIFF、DATEDIFF) MySQLを使用して時間差を計算...

MySQL の group by に関する簡単な説明

目次1. はじめに2. ユーザーテーブルを準備する2.1 グループ化ルール2.2 グループの使用2....

Windows での MySQL の使用: 自動スケジュールバックアップの実装

1. バックアップスクリプトを書く 著者:www.yumi-info.com 日付:20171222...

EXPLAIN を使って MySQL の SQL 実行プランを分析する方法

序文MySQL では、EXPLAIN コマンドを使用して、テーブルの接続方法や SELECT ステー...

htmlハイパーリンクaのクリックイベントの後、hrefで指定されたアドレスにジャンプします。

場合によっては、ジャンプを完了するために href の代わりにハイパーリンク <a> を...

ウェブページ内の 2 つのボックス モデル (W3C ボックス モデル、IE ボックス モデル)

Web ページ ボックス モデルには 2 種類あります。 1: 標準 W3C ボックス モデル。2:...

js オプション連鎖演算子の使用

序文オプションの連鎖演算子 (?.) を使用すると、チェーン内の各参照が有効であることを明示的に検証...

Nginx リクエスト制限の設定方法

Nginx は、多くの優れた機能を備えた強力で高性能な Web およびリバース プロキシ サーバーで...

MySQLクエリ条件の一般的な使用法の詳細な説明

この記事では、例を使用して、MySQL クエリ条件の一般的な使用方法を説明します。ご参考までに、詳細...

企業サイトとコラム辞典 中国語と英語の比較 中国語と英語のバイリンガル企業サイトを作る仲間は

名前キャラクター名前キャラクター情報ニューステクノロジー技術スキンケアスキンケア補う補う香水香水化粧...

Docker-compose を使用して ELK をデプロイするためのサンプル コード

環境ホストIP 192.168.0.9 Docker バージョン 19.03.2 docker-co...

自動ヘルスレポートを実現するDocker+Selenium方式

この記事では、ある大学の健康報告システムを例に、Web 側の自動化操作を完成させます。使用したテクノ...