LinuxでのMySQLデータベースのコンパイルとインストールの詳細な説明

この記事は、私のWeChat公式アカウントで同時に公開されています。記事の下部にあるQRコードをスキャンするか、WeChatでchaodevを検索してフォローしてください。


1.システム環境

ハードウェア:Huawei国内サーバー(アームアーキテクチャKunpeng CPU)
システム:国内入札勝者Kylin(64ビット)
MySQLバージョン:5.7.26
ここに画像の説明を挿入します

ディスクとメモリ
ここに画像の説明を挿入します

特記事項:このサーバーのCPUはarmアーキテクチャであり、mysqlの公式Webサイトにあるこれらのインストールパッケージは機能しません。次のように、インストール中にバイナリファイルを実行することはできません。
ここに画像の説明を挿入します

コンパイルしてインストールするには、ソースコードパッケージを自分でダウンロードする必要があります。


2.インストール前の準備

優勝したKylinオペレーティングシステムにはMySQLがプリインストールされている可能性があります。インストールされている場合は、最初にアンインストールする必要があり、/ etc / my.cnfがすでに存在します。インストールするときは、最初に次のコマンドを実行してください。そうしないと、エラーが報告されます。インストール中。

mv /etc/my.cnf /etc/my.cnf.bak

3、インストール手順

1.ダウンロードを後押し

なぜboostをインストールするのですか?cmake MySQLソースコードパッケージを使用する必要があるため、MySQL5.7にはboost1.59以降が必要です。バージョン1.59を使用することをお勧めします。

ダウンロードリンク:https//www.boost.org/users/history/version_1_59_0.html
ここに画像の説明を挿入します


2.ブーストインストール

ブーストを解凍し、/ usr / local / boostディレクトリにコピーします

tar -zxvf boost_1_59_0.tar.gz
cp -r boost_1_59_0 /usr/local/boost

インストール

cd /usr/local/boost
./bootstrap.sh

ここに画像の説明を挿入します

Boostライブラリをビルドする

./b2
./b2 --prefix=/usr/local/boost install

注:bootstrap.shは、インストール環境を確認するために使用されます。b2は、前の手順が成功した後に生成されます。これを使用して、ブーストライブラリを構築します。


3.MySQLのダウンロード

ダウンロードリンク:https//downloads.mysql.com/archives/community/
ここに画像の説明を挿入します

自分でコンパイルする必要があるため、ソースパッケージをダウンロードします。


4.MySQLのインストール

4.1解凍
tar -zxvf mysql-5.7.26.tar.gz

/ usr / local /にコピーします

cp mysql-5.7.26 /usr/local/

4.2mysqlユーザーグループとユーザーを作成します

まず、mysqlユーザーグループとユーザーが存在するかどうかを確認します

cat /etc/group | grep mysql
cat /etc/passwd |grep mysql

mysqlユーザーグループを作成します

groupadd mysql

ユーザーmysqlを作成し、mysqlユーザーグループに参加します

useradd -r -g mysql mysql

ユーザーグループとユーザー、およびmysqlディレクトリの下のすべてのディレクトリとフォルダの権限を変更します

[root@localhost /]# chown -R mysql:mysql /usr/local/mysql-5.7.26
[root@localhost /]# chmod -R 755 /usr/local/mysql-5.7.26

4.3コンパイルに必要なコンポーネントと依存関係をインストールします
yum -y install gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl make cmake
yum -y install ncurses-devel libaio-devel bison perl-Time-HiRes
yum install libatomic

4.4データディレクトリを作成する
mkdir -p /home/mysql/data              #创建目录
chown mysql:mysql -R /home/mysql/data   #赋予权限

4.5コンパイル

ディレクトリmysql-5.7.26に切り取り、cmakeコマンドを使用してコンパイルします

cd mysql-5.7.26/
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.26 -DMYSQL_DATADIR=/home/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

次に、makeコマンドを使用してコンパイルします

make

ここに画像の説明を挿入します

注:エラーが報告され、指示を分離できない場合は、記事の最後にある解決策を参照してください。


4.6インストール

makeinstallを実行してインストールします

make install

ここに画像の説明を挿入します


5.環境変数の構成

vi /etc/profile

テキストの最後に追加

export PATH=/usr/local/mysql-5.7.26/bin:/usr/local/mysql-5.7.26/lib:$PATH

ここに画像の説明を挿入します

次のコマンドを実行して、構成を有効にします

source /etc/profile

6.my.cnfファイルに必要なディレクトリを作成します

mkdir /usr/local/mysql-5.7.26/tmp
mkdir /usr/local/mysql-5.7.26/run
chmod -R 755 /usr/local/mysql-5.7.26/tmp
chmod -R 755 /usr/local/mysql-5.7.26/run

mysqld.logファイルとmysqld.pidファイルを作成します

mkdir /usr/local/mysql-5.7.26/logs
mkdir /usr/local/mysql-5.7.26/pids
touch /usr/local/mysql-5.7.26/logs/mysqld.log
touch /usr/local/mysql-5.7.26/pids/mysqld.pid

ここに画像の説明を挿入します


7.my.cnfファイルを構成します

当初、mvはmy.cnfで実行されていましたが、この時点で復元できます。

cd /etc/
cp my.cnf.bak my.cnf

ここに画像の説明を挿入します

改訂内容は以下のとおりです。

[mysqld_safe]
log-error=/usr/local/mysql-5.7.26/logs/mysqld.log
pid-file=/usr/local/mysql-5.7.26/pids/mysqld.pid
[mysqldump]
quick
[mysql]
no-auto-rehash
[client]
default-character-set=utf8
[mysqld]
basedir=/usr/local/mysql-5.7.26
tmpdir=/usr/local/mysql-5.7.26/tmp
datadir=/home/mysql/data
socket=/usr/local/mysql-5.7.26/run/mysql.sock
port=3306
user=root
#忽略大小写
lower_case_table_names=1

8.データベースの初期化

cd /usr/local/mysql-5.7.26/bin
mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql-5.7.26 --datadir=/home/mysql/data --user=mysql

ここに画像の説明を挿入します

–initializeは、デフォルトで安全なパスワードを生成することを意味し、–initialize-insecureは、パスワードを生成しないことを意味します。

初期化後、コロンが初期パスワードになった後など、プロンプトの行が表示されます。

2020-05-29T08:47:34.659979Z 1 [Note] A temporary password is generated for root@localhost: wpDnIn.du1ce

ここでの初期パスワードは次のとおりです:wpDnIn.du1ce


9.MySQLを起動します

mysqlサービスファイルを/etc/init.d/ディレクトリにコピーし、実行権限を付与します

cp support-files/mysql.server /etc/init.d/mysqld
chmod a+x /etc/init.d/mysqld

ここに画像の説明を挿入します

MySQLを起動します

service mysqld start

4、関連する使用

1.パスワードを変更します

mysqlにログインします

/usr/local/mysql-5.7.26/bin/mysql -uroot -p -S /usr/local/mysql-5.7.26/run/mysql.sock

パスワードを変更する

mysql>set password for root@localhost = password('123456');

2.リモート接続を開きます

mysql>use mysql;
mysql>select Host,User,authentication_string from user;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;

5、ファイアウォール構成

ファイアウォールが開いていない場合は、次のようにファイアウォールを開いてファイアウォールサービスを開始します。

systemctl start firewalld

mysqlのデフォルトポートは3306であり、次のように開く必要があります。

#永久开放3306端口
firewall-cmd --add-port=3306/tcp --permanent --zone=public
#重启防火墙
firewall-cmd --reload

6、問題と解決策

1.データベースの初期化中にバイナリファイルを実行することはできません

[root@localhost bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
-bash: ./mysqld: 无法执行二进制文件

ここに画像の説明を挿入します

理由:インストールパッケージはこのCPUカーネルアーキテクチャには適用されません。
解決策:mysqlソースパッケージを再コンパイルする必要があります。


2.インストールパッケージのコンパイル時にエラーが報告され、命令を分離できないことが示されます

ここに画像の説明を挿入します

解決策:ソースパッケージに切り替えて、次のファイルを変更します

vi storage/innobase/CMakeLists.txt

ここに画像の説明を挿入します

この段落の内容を次のように変更します。

IF(CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
  # Bug was fixed in GCC 5.2, so workaround only needed < 5.2
  EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion
                  OUTPUT_VARIABLE GCC_VERSION)
  IF(GCC_VERSION VERSION_LESS 5.2)
    INCLUDE(${MYSQL_CMAKE_SCRIPT_DIR}/compile_flags.cmake)
    ADD_COMPILE_FLAGS(
      btr/btr0btr.cc
      btr/btr0cur.cc
      buf/buf0buf.cc
      gis/gis0sea.cc
      handler/handler0alter.cc
      mtr/mtr0mtr.cc
      row/row0merge.cc
      row/row0mysql.cc
      row/row0trunc.cc
      srv/srv0srv.cc
      fts/fts0fts.cc
      COMPILE_FLAGS "-O0"
      )
  ENDIF()
ENDIF()

ここに画像の説明を挿入します


3. mysqlを起動し、エラーを報告します

ここに画像の説明を挿入します

そのようなpidファイルがないことを確認してください
ここに画像の説明を挿入します

次に、service mysql statusコマンドを使用して、mysqlの起動ステータスを表示します。エラーは次のとおりです。

[root@localhost data]# service mysqld status
 ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists

ここに画像の説明を挿入します

このmysqlファイルを見つけて削除します。



それが役立つならそれが好きです!
原本は簡単ではありませんので、転載元をご記入ください。

以下のQRコードをWeChatでスキャンして、公式アカウントをフォローしてください

おすすめ

転載: blog.csdn.net/xch_yang/article/details/114916882