シェル スクリプトを使用してワンクリックで MySQL 5.7.29 をインストールする方法

シェル スクリプトを使用してワンクリックで MySQL 5.7.29 をインストールする方法

この記事は51CTOブログの著者wjw555の作品を参照しています。

スクリプトの内容:

vim インストール.mysql.sh
 
#!/bin/bash
 
[ -f /etc/init.d/functions ]&& . /etc/init.d/functions
 
###ユーザーがルートかどうかを確認する
[ $UID -ne 0 ]の場合;
 echo "エラー: このスクリプトを実行するには root である必要があります。インストールには root を使用してください"
 出口1
フィ
 
クリア
エコー "= ...
echo "Redhat/CentOS Linux 上で MySQL 5.7.29 を自動コンパイルしてインストールするツール"
エコー "= ...
#pkill -9 MySQL
#日付 +%Y-%m-%d-%H-%M
#システム独自のMysqlをアンインストールする
#/bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps
#/bin/rpm -e $(/bin/rpm -qa | grep mariadb|xargs) --nodeps
#/bin/rm -f /etc/my.cnf
 
#mysql ルートパスワードを設定する
 エコー "=================================
  mysqlrootpwd="$1"
  [ "$1" = "" ]の場合;
    mysqlrootpwd="rootmysql"
  フィ
 
#どの MySQL バージョンをインストールしますか?
エコー "=================================
 
 isinstallmysql57="5.7.29"
 echo "MySQL 5.7.29 をインストールします。y を入力してください"
 read -p "(y、nを入力してください):"
# インストール関連のコンテンツを初期化します。
 #古いMysqlプログラムを削除する
 rpm -qa|grep mysql
 rpm -e mysql
 
 
cat >>/etc/security/limits.conf<<EOF
* ソフト nproc 65535
* ハード nproc 65535
* ソフトノーファイル 65535
* ハードnofile 65535
終了
 
echo "fs.file-max=65535" >> /etc/sysctl.conf
 
echo "================================MySQL 5.7.29 をインストール===================================="
 
#古いmy.cnfをバックアップする
#rm -f /etc/my.cnf
[ -s /etc/my.cnf ]の場合;
 mv /etc/my.cnf /etc/my.cnf.`日付 +%Y%m%d%H%M%S`.bak
フィ
echo "=============================MySQL 5.7.29 をインストールしています…………============================"
 
##mysqlディレクトリ設定変数を定義する
データディレクトリ=/data/mysql/data
バイナリログディレクトリ=/data/mysql/binlog
ログディレクトリ=/data/mysql/logs
 
##yum install devel と wget mysql
yum インストール numactl
/usr/bin/wget -P /tmp http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
睡眠2
tar xf /tmp/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ローカルマシンでmysqlを実行するには、次のコマンドを実行します。
grep mysql /etc/passwd
RETVAL=$?
[ $RETVAL -ne 0 ]の場合;
 ユーザー追加 mysql -s /sbin/nologin -M
  アクション「mysql ユーザーが正常に追加されました」/bin/true
 それ以外
  アクション " $(echo -e "\e[31;47;5m mysqlユーザーは既に存在します\e[0m")" /bin/false
フィ
 
if [ ! -d "$Datadir" ]
それから
 mkdir -p /data/mysql/data
フィ
 
 
if [ ! -d "$Binlogdir" ]
それから
 mkdir -p /data/mysql/binlog
フィ
 
if [ ! -d "$Logdir" ]
それから
 mkdir -p /data/mysql/logs
フィ
 
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql
 
#/etc/my.cnfを編集する
#SERVERID=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}'| awk -F. '{ print $3$4}'`
cat >>/etc/my.cnf<<EOF
[クライアント]
ポート = 3306
 
[mysql]
自動再ハッシュ
プロンプト="\\u@\\h [\\d]>"
#pager="less -i -n -S"
#tee=/opt/mysql/クエリ.log
 
[mysqld]
####: グローバル用
ユーザー = mysql       
ベースディレクトリ =/usr/local/mysql/    
データディレクトリ = /data/mysql/data 
サーバーID =2333306      
ポート = 3306       
文字セットサーバー =utf8       
明示的なタイムスタンプのデフォルト = オフ       
log_timestamps = システム      
ソケット = /tmp/mysql.sock    
読み取り専用 = 0        
スキップ名解決 =1        
自動増分 =1        
自動増分オフセット =1        
小文字のテーブル名 = 1        
secure_file_priv =        
オープンファイル制限 = 65536       
最大接続数 = 1000       
スレッドキャッシュサイズ = 64       
テーブルオープンキャッシュ =81920       
テーブル定義キャッシュ =4096       
テーブルオープンキャッシュインスタンス = 64       
最大準備済みステートメント数 = 1048576      
 
####: binlog用
binlog_format = 行       
log_bin = /data/mysql/binlog/mysql-bin      
binlog_rows_query_log_events = オン       
log_slave_updates = オン       
有効期限 =7        
binlog_cache_size = 65536       
#binlog_checksum =なし       
同期バイナリログ = 1        
スレーブコミット順序の保持 =ON       
 
####: エラーログ用
log_error = /data/mysql/logs/error.log      
 
general_log = オフ       
general_log_file = /data/mysql/logs/general.log     
 
####: 遅いクエリログ用
slow_query_log = オン        
slow_query_log_file = /data/mysql/logs/slow.log      
#log_queries_not_using_indexes = オン       
長いクエリ時間 = 1.000000      
 
####: gtidの場合
#gtid_executed_compression_period = 1000       
gtid_mode = オン        
強制GTID一貫性 = オン        
 
####: レプリケーション用
スレーブ開始をスキップ = 1        
#master_info_repository =テーブル       
#リレーログ情報リポジトリ =テーブル       
スレーブパラレルタイプ = 論理クロック     
スレーブ並列ワーカー = 4        
#rpl_semi_sync_master_enabled = 1        
#rpl_semi_sync_slave_enabled = 1        
#rpl_semi_sync_master_timeout = 1000       
#plugin_load_add =semisync_master.so   
#plugin_load_add =semisync_slave.so    
binlog_group_commit_sync_delay = 100       
binlog_group_commit_sync_no_delay_count = 10      
 
####: innodbの場合
デフォルトのストレージエンジン = innodb     
デフォルト_tmp_storage_engine = innodb     
innodb_data_file_path = ibdata1:1024M:自動拡張 
innodb_temp_data_file_path = ibtmp1:12M:自動拡張  
innodb_buffer_pool_filename = ib_buffer_pool   
innodb_log_group_home_dir = /data/mysql/data      
innodb_log_files_in_group = 3       
innodb_log_file_size = 1024M      
innodb_file_per_table = オン      
innodb_online_alter_log_max_size = 128M      
innodb_open_files = 65535      
innodb_page_size = 16k      
innodb_thread_concurrency = 0       
innodb_read_io_threads = 4       
innodb_write_io_threads = 4       
innodb_purge_threads = 4       
innodb_page_cleaners = 4   
     # 4 (LRU ダーティ ページを更新)
innodb_print_all_deadlocks = オン      
innodb_deadlock_detect = オン      
innodb_lock_wait_timeout = 20      
innodb_spin_wait_delay = 128      
innodb_autoinc_lock_mode = 2       
innodb_io_capacity = 200      
innodb_io_capacity_max = 2000      
#--------永続的なオプティマイザ統計
innodb_stats_auto_recalc = オン      
innodb_stats_persistent = オン      
innodb_stats_persistent_sample_pages = 20      
 
 
innodb_adaptive_hash_index = オン      
innodb_change_buffering =すべて      
innodb_change_buffer_max_size = 25      
innodb_flush_neighbors = 1       
#innodb_flush_method =       
innodb_doublewrite = オン      
innodb_log_buffer_size = 128M      
innodb_flush_log_at_timeout = 1       
innodb_flush_log_at_trx_commit = 1       
innodb_buffer_pool_size =4096M      
innodb_buffer_pool_instances = 4
自動コミット =1       
#---------innodb スキャン耐性
innodb_old_blocks_pct = 37      
innodb_old_blocks_time = 1000      
#--------innodb 先読み
innodb_read_ahead_threshold = 56      
innodb_random_read_ahead = オフ      
#---------innodb バッファプールの状態
innodb_buffer_pool_dump_pct = 25      
innodb_buffer_pool_dump_at_shutdown =オン      
innodb_buffer_pool_load_at_startup =オン      
 
終了
 
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
Pass=$(grep '一時パスワード' /data/mysql/logs/error.log |awk '{print $NF}')
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld オン
/etc/init.d/mysqld を起動します
echo "エクスポート PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
ソース /etc/profile.d/mysql.sh
echo "=============================MySQL 5.7.29 のインストールが完了しました==========================="
ps -eo 開始、cmd、pid|grep mysql
/usr/local/mysql/bin/mysqladmin -uroot -p"$Pass" パスワード $mysqlrootpwd
[root@localhost ~]# sh install.mysql.sh mysqlroot
[root@localhost ~]# ソース /etc/profile.d/mysql.sh

注: mysqlrootは、インストールスクリプトがMySQLサービスのデフォルトパスワードを変更した後の新しいパスワードです。

[root@localhost ~]# mysql -uroot -p'mysqlroot' -e "select now()"   
mysql: [警告] コマンドライン インターフェイスでパスワードを使用すると安全でない可能性があります。
+---------------------+
| 今() |
+---------------------+
| 2020-10-13 16:18:47 |
+---------------------+

この時点で、MySQL サービスが正常に開始されました。

要約する

これで、シェル スクリプトを使用してワンクリックで MySQL 5.7.29 をインストールする方法についての記事は終了です。シェル スクリプトを使用してワンクリックで MySQL をインストールする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL マスター/スレーブ ステータスを監視するシェル スクリプト
  • MySQLの一般的なバックアップコマンドとシェルバックアップスクリプトの共有
  • MySQL データベースのデータを定期的にバックアップし、指定した期間保持するシェル スクリプト
  • シェル スクリプトは、仮想マシンの基本構成の作成を自動化します: tomcat--mysql--jdk--maven
  • MySQL のスケジュールされたバックアップ、削除、および回復機能を実装するシェル スクリプト
  • 各Mysqlテーブルの行数を正確にカウントする小さなシェルスクリプト
  • シェルスクリプトを使用して、サーバー上にMySQLデータベースアカウントを一括作成します。
  • シェルスクリプトを使用してMySQLにインデックスを追加する方法
  • このようなシェル スクリプトを使用して、多数の MySQL データベースを強制終了します (推奨)
  • シェル スクリプトを使用して複数の MySQL データベースを毎日自動的にバックアップする方法
  • MySQL Shellの紹介とインストール

<<:  Mac 環境での Nginx 構成とローカル静的リソースへのアクセスの実装

>>:  Web面接におけるJS事前解析と変数プロモーションの違い

推薦する

HTML ページの部分更新の実装コード

イベント応答の更新: 要求されたときのみ更新1. JS HTML DOM または jQuery を介...

MySQL での and or クエリの優先度分析

これは見落とされがちな問題かもしれません。まず、次の点を明確にする必要があります。 MySQL では...

Web開発で使用される基本的な概念と技術の紹介

本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...

Vue3カプセル化メッセージメッセージプロンプトインスタンス関数の詳細な説明

目次Vue3 カプセル化メッセージプロンプトインスタンス関数スタイルレイアウトカプセル化メッセージ....

Mybatisの特殊文字処理の詳細な説明

序文: Mybatis の特殊文字処理、Mybatis の xml ファイル内の特殊文字の処理、ここ...

Flex レイアウトで適応型ページを作成する (構文と例)

Flex レイアウトの紹介英語の Flex はフレキシブル ボックス、つまり伸縮性のあるボックスを...

mysql のファイル mysql-bin.000001 とは何ですか? 削除できますか?

ポートを使用して MySQL をインストールした後、しばらくすると /var の容量が不足しているこ...

CSSを使用して、頻繁に表示される奇妙なボタンを簡単に実装します。

背景グループでは、CSS を使用してインセット コーナー ボタンを実装する方法や、矢印付きのボタンを...

MySQL (8 および 5.7) の Docker インストール

この記事では、Dockerを使用してMySQLデータベースとリモートアクセス構成をデプロイする方法を...

JavaScript でシンプルな Web 時計を実装する

JavaScript を使用して Web ページ クロックを実装します。効果は次の図に示されています...

Vueコンポーネント化の基本的な使用方法の詳細

目次1. コンポーネント化とは何ですか? 2. 基本的な使い方序文:場合によっては、HTML 構造化...

MySQL 8.0.15 のダウンロードとインストールの詳細なチュートリアルは初心者にとって必須です。

この記事では、MySQL 8.0.15をダウンロードしてインストールするための具体的な手順を参考まで...

MySQL でテーブルを作成するときの NULL と NOT NULL の使用方法の詳細な説明

MySQL の仕様によっては、テーブル作成仕様にすべてのフィールドが空であってはならないという要件を...

bash を使って日付をカウントダウンする方法

重要なイベントまであと何日あるか知りたいですか? Linux bash と date コマンドが役に...

Vueはマルチタブコンポーネントを実装します

効果を直接確認するために、リロード、左を閉じる、右を閉じる、その他の機能を閉じるなどの右クリック メ...