序文
このドキュメントは、インターネット接続がある場合に Ubuntu20.04 システムで mysql5.7 をデプロイするのに適しています。
mysql5.7 をインストールする 2 つの方法を提供し、mysql リモート アクセス許可を有効にしてリモート接続を許可する方法、およびデータベース データのストレージ パスを変更する方法についても説明します。
1. インストール前の準備
1. 現在サーバー上に MySQL が存在するかどうかを確認します
rpm -qa | grep mysql
図に示すように、rpm コマンドが存在しないため、rpm をインストールする必要があることを示すプロンプトが表示されます。コマンド: apt install rpm
注:空のメッセージが返された場合は、MySQL が現在の環境にインストールされていないことを意味します。後続の操作については、ステップ 4 に直接スキップしてください。
2. MySQL の関連構成ファイル、ソース コード、ヘルプ ドキュメントの場所を表示します。
whereis mysql
ps: 存在する場合は、mysql 関連のパスが返されます。
3. 上記を通じて対応するディレクトリを見つけ、対応するmysql関連ファイルを削除します。
rpm -e --nodeps mysql-xxxx
-- nodeps パラメータ、依存関係チェックをスキップ
注:現在の環境に mysql がインストールされていない場合は、手順 2 と 3 を無視してください。
4. 現在の環境に独自の mariadb データベースがあるかどうかを確認します。
rpm -qa | grep mariadb
注:空の情報が返された場合は、mariadb が現在の環境にインストールされていないことを意味するため、dpkg の手順に進んでインストールします。
5. アンインストールを推奨
rpm -e --nodeps mariadb-libs
2. dpkg -i によるインストール (方法 1) 推奨
1. mysql5.7のdebファイルソースパッケージをダウンロードします。
cd /usr/local
mkdir mysql
cd mysql
https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-server_5.7.35-1ubuntu18.04_amd64.deb-bundle.tarを取得し ます
ps:デフォルトでは、現在のディレクトリにダウンロードされます。
2. ソースコードパッケージを解凍します。
tar -xvf mysql-server_5.7.35-1ubuntu18.04_amd64.deb-bundle.tar
解凍された関連パッケージ
3. テスト関連パッケージの名前を削除します。無駄です。
rm -f mysql-community-test_5.7.35-1ubuntu18.04_amd64.deb
rm -f mysql-testsuite_5.7.35-1ubuntu18.04_amd64.deb
4. dpkgコマンドを使用してインストールする
dpkg -i mysql-*.deb
説明: dpkg -i は、.deb ファイルをインストールするための dpkg コマンド オプションです。
(データベースを読み取り中...現在インストールされているファイルとディレクトリは 78536 個です。) mysql-client_5.7.35-1ubuntu18.04_amd64.deb を解凍する準備をしています。。。 mysql クライアント (5.7.35-1ubuntu18.04) を解凍します。。。 以前に選択されていなかったパッケージ mysql-common を選択します。 mysql-common_5.735-1ubuntu18.04_amd64.deb を解凍する準備をしています。。。 mysql 共通 (5.7.35-1ubuntu18.04) を解凍します。。。 以前に選択を解除したパッケージ mysql コミュニティ クライアントを選択します。 mysql-community-client5.7.35-1ubuntu18.04_amd64.deb を解凍する準備をしています。。。 mysql コミュニティ クライアント (5.7.35-1ubuntu18.04) を解凍します。。。 以前に選択されていなかったパッケージ mysql コミュニティ サーバーを選択します。 mysql-community-server_5.7.35-1ubuntu18.04_amd64.deb を解凍する準備をしています。。。 mysql コミュニティ サーバー (5.7.35-1ubuntu18.04) を解凍します。。。 以前に選択されていなかったパッケージ mysql コミュニティ ソースを選択します。 mysql-community-source_5.7.35-1ubuntu18.04_amd64.deb を解凍する準備をしています。。。 mysql コミュニティのソース コード (5.7.35-1ubuntu18.04) を解凍します。。。 以前に選択を解除したパッケージ mysql サーバーを選択します。 mysql-server_5.7.35-1ubuntu18.04_amd64.deb を解凍する準備をしています。。。 mysql サーバー (5.7.35-1ubuntu18.04) を解凍します。。 mysql-common (5.7.35-1ubuntu18.04) のセットアップ。。。 代替手段を更新: /etc/mysql/my.cnf.fallback を使用して /etc/mysql/my.cnf (my.cnf) を自動モードで提供します dpkg: 依存関係の問題により、mysql コミュニティ クライアントの構成が妨げられます。 mysql コミュニティ クライアントは libtinfo5 (>=6) に依存しますが、次のとおりです。 パッケージ libtinfo5 がインストールされていません。 dpkg: パッケージ mysql コミュニティ クライアントのエラー処理 (--install): 依存関係の問題 - 未構成のままにする dpkg: 依存関係の問題により、mysql コミュニティ サーバーの構成が妨げられます。 mysql コミュニティ サーバーは libmecab2 に依存しますが、次のとおりです。 パッケージ libmecab2 がインストールされていません。 dpkg: mysql コミュニティ サーバー パッケージの処理中にエラーが発生しました (--install): 依存関係の問題 - 未構成のままにする mysql コミュニティ ソース コード (5.7.35-1ubuntu18.04) のセットアップ。。。 dpkg: 依存関係の問題 mysql サーバーのブロック構成: mysql サーバーは mysql コミュニティ サーバー (=5.7.35-1ubuntu18.04) に依存しますが、次のとおりです。 パッケージ mysql-community-server が構成されていません。 dpkg: パッケージ mysql-server (--install) の処理中にエラーが発生しました: 依存関係の問題 - 未構成のままにする dpkg: 依存関係の問題により、mysql クライアントの構成が妨げられます。 mysql クライアントは mysql コミュニティ クライアント (=5.7.35-1ubuntu18.04) に依存しますが、次のとおりです。 パッケージ mysql-community-client が設定されていません。 dpkg: パッケージ mysql クライアントの処理中にエラーが発生しました (--install): 依存関係の問題 - 未構成のままにする man データベースのトリガーを処理します (2.9.1-1)。。。 systemd (245.4-4ubuntu3.22) のトリガーを処理します。。。 処理中にエラーが発生しました: mysqlコミュニティクライアント mysqlコミュニティサーバー mysqlサーバー mysqlクライアント |
上記は、libtinfo5 および libmecab2 パッケージが欠落していることを意味しますが、これらを一度に直接インストールできます。
apt インストール libtinfo5 libmecab2
実行後、以下が表示されます: root ユーザーのパスワードを設定します
パスワードを認証する
5. バージョンを確認する
mysql -V 或 /usr/bin/mysql -V
6.mysqlのステータスを確認する
systemctl status mysql
7.mysqlを起動します
systemctl start mysql
8.mysqlサービスを停止します。
systemctl stop mysql
9.mysqlサービスを再起動します。
systemctl restart mysql
10.オートスタート
systemctl enable mysql
3. 圧縮パッケージを使用してインストールする (方法 2)
1. コマンドを使用して、必要な mysql インストール パッケージをダウンロードします。
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
2. 解压
tar -zxvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
3.修改解压后的名称:mysql
mv mysql-5.7.35-linux-glibc2.12-x86_64 mysql
4.创建存放数据的目录
mkdir -p /u01/mysql/data
cd /u01/mysql/data
5.给创建的数据目录赋予权限
chmod -R 777 /u01/mysql/data
6.创建用户用户组,并将创建的用户添加到用户组中
groupadd mysql 创建用户组
useradd -g mysql mysql 创建用户mysql(mysql)并将用户添加到用户组(mysql)中
7.修改mysql配置文件
vim /etc/my.cnf
[mysqld] bind-address=0.0.0.0 port=3306 user=mysql basedir=/usr/local/mysql datadir=/u01/mysql/data socket=/tmp/mysql.sock log-error=/u01/mysql/data/mysql.err pid-file=/u01/mysql/data/mysql.pid #character config character_set_server=utf8mb4 symbolic-links=0 explicit_defaults_for_timestamp=true |
8.安装并初始化mysql
(1)进入mysql安装目录的bin目录
cd bin
(2)执行如下命令
./mysqld --initialize --user=mysql --datadir=/u01/mysql/data/ --basedir=/usr/local/mysql/
9.查看mysql密码
cat /u01/mysql/data/mysql.err
10.修改配置如下所示:
打开文件:
vim /usr/local/mysql/support-files/mysql.server
11.添加软连接
ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
12.启动mysql
如果使用 service mysql start 出现如下所示,就使用后面的命令启动mysql
上述命令不行,可以尝试命令: sudo /etc/init.d/mysql start
四、开启mysql远程访问权限,允许远程连接
1.登录mysql
mysql -u root -p
2.选择mysql数据库
use mysql
3.修改配置
update user set host='%' where user='root';
4.刷新权限,使其生效
flush privileges;
5.退出
exit
五、修改数据存储路径
1.查看当前mysql的数据存放路径
(1)登录mysql
(2)看目前mysql的数据存放路径
show variables like '%datadir%';
默认的数据存放位置
2.在/etc/mysql/mysql.conf.d目录下,修改mysqld.cnf文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
如下:
3.编辑usr.sbin.mysqld配置文件
vim /etc/apparmor.d/usr.sbin.mysqld
修改成如下配置
在最后添加两行命令,是为了AppArmor配置以允许MySQL访问所需的文件和目录
4.配置权限
sudo chmod -R 775 /u01/mysql/data 配置文件夹的权限
sudo chown -R mysql:mysql /u01/mysql/data
5.重启服务
service apparmor reload
service apparmor restart
service mysql start
6.再验证一下是否修改成功-重新执行步骤1
遇到问题
问题一:
AppArmor parser error for /etc/apparmor.d/usr.lib.snapd.snap-confine.real in /etc/apparmor.d/usr.lib.snapd.snap-confine.real at line 11: Could not open '/var/lib/snapd/apparmor/snap-confine' Skipping profile in /etc/apparmor.d/disable: usr.sbin.rsyslogd AppArmor parser error for /etc/apparmor.d/usr.sbin.mysqld in /etc/apparmor.d/usr.sbin.mysqld at line 7: Could not open 'abstractions/mysql' |
解决方法:安装snap
apt intasll snap
问题二:
--initialize specified but the data directory has files in it. Aborting.
意思是初始化数据目录时发现目录里面有文件,可能原因是之前运行过命令目录中已生成文
件。
解决方法:只要我们找到MySQL的数据目录并删除里面的文件即可解决。
找到mysql存放的路径上面的第2步就可以看见,原位置是/var/lib/mysql,切换到这个目录下,删除所有文件命令 rm -rf * 再看一下新位置(/u01/mysql/data/)是否存在文件有的话也删除。全部删除完成之后,重新执行mysql启动命令:systemctl status mysql
注:只适用于新安装的数据库,不适用之前安装好的修改存储路径,后者需要先备份数据。
六、MySQL实用操作命令
1.连接mysql命令
mysql -u root -p
パスワードを入力する
2. すべてのデータベースを表示する
show databases;
3.データベースの切り替え
データベースを使用します。
4. データベースのテーブル情報を表示する
show tables;
5.データベースの作成
drop database 数据库名;
6. データベースの削除
drop database 数据库名;
7.終了
出口
7.mysqlをアンインストールする
1.mysqlサーバーを停止します
systemctl stop mysql
2.mysqlパッケージを削除します
sudo apt-get remove --purge mysql-server mysql-client mysql-common
3.mysql関連ファイルがまだあるかどうかを確認します
whereis mysql
4. 上記ディレクトリが存在する場合は、一つずつ削除してください。
5. 残った依存関係をクリーンアップする
sudo apt-get autoremove
6. システムにインストールされている「mysql」関連パッケージをリストします。
sudo dpkg -l | grep mysql
7. 見つかったら、コマンドを使用して mysql 関連のソフトウェア パッケージを削除します。
sudo apt-get remove --purge mysql相关软件包