MySQL | 5.7.11 tar.gz安裝
MySQL | mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
安裝
- 使用者mysqladmin
- 密碼1234
- 安裝路徑 /opt/module/mysql
- 資料目錄 //opt/module/mysql/data
- 埠 3306
- 解壓及建立目錄
- 解壓到
/opt/module
[root@localhost module]# tar xzvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
- 改名為
mysql
[root@localhost module]# mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql
- 建立目錄
mysql/arch ,mysql/data ,mysql/tmp
[root@localhost module]# mkdir mysql/arch mysql/data mysql/tmp
- 修改my.cnf(見檔案) 沒有就建立
[root@localhost module]# vi /etc/my.cnf
## 檔案內容 [client] port = 3306 #監聽埠 socket = /opt/module/mysql/data/mysql.sock #socket通訊設定 default-character-set=utf8mb4 [mysqld] #伺服器端配置 port = 3306 #監聽埠 socket = /opt/module/mysql/data/mysql.sock #socket通訊設定 #bind-address = 0.0.0.0 #監聽的ip地址 #server-id = 1 #MySQL服務的ID #*** skip options 相關選項 ***# skip-slave-start #啟動 mysql,不啟動複製 skip-external-locking #不使用系統鎖定,要使用 myisamchk,必須關閉伺服器 ,避免 MySQL的外部鎖定,減少出錯機率增強穩定性。 #*** MyISAM 相關選項 ***# key_buffer_size = 256M #指定用於索引的緩衝區大小,增加它可得到更好的索引處理效能。如果是以InnoDB引擎為主的DB,專用於MyISAM引擎的 key_buffer_size 可以設定較小,8MB 已足夠 如果是以MyISAM引擎為主,可設定較大,但不能超過4G. 在這裡,強烈建議不使用MyISAM引擎,預設都是用InnoDB引擎.注意:該引數值設定的過大反而會是伺服器整體效率降低! sort_buffer_size = 2M #查詢排序時所能使用的緩衝區大小。排序緩衝被用來處理類似 ORDER BY 以及 GROUP BY 佇列所引起的排序.一個用來替代的基於磁碟的合併分類會被使用.檢視 “Sort_merge_passes” 狀態變數. 在排序發生時由每個執行緒分配 注意:該引數對應的分配記憶體是每連線獨佔!如果有 100 個連線,那麼實際分配的總共排序緩衝區大小為 100 × 6 =600MB,所以,對於記憶體在 4GB 左右的伺服器推薦設定為 6-8M。 read_buffer_size = 2M #讀查詢操作所能使用的緩衝區大小。和 sort_buffer_size 一樣,該引數對應的分配記憶體也是每連線獨享!用來做 MyISAM 表全表掃描的緩衝大小.當全表掃描需要時,在對應執行緒中分配. read_rnd_buffer_size = 4M #MyISAM 以索引掃描(Random Scan)方式掃描資料的 buffer大小 query_cache_size= 32M #指定 MySQL 查詢緩衝區的大小。可以通過在 MySQL 控制檯執行以下命令觀察: #程式碼: #> SHOW VARIABLES LIKE '%query_cache%'; #> SHOW STATUS LIKE 'Qcache%';如果 Qcache_lowmem_prunes 的值非常大,則表明經常出現緩衝不夠的情況; #如果 Qcache_hits 的值非常大,則表明查詢緩衝使用非常頻繁,如果該值較小反而會影響效率,那麼可以考慮不用查詢緩衝; Qcache_free_blocks,如果該值非常大,則表明緩衝區中碎片很多。 #memlock # 如果你的系統支援 memlock() 函式,你也許希望開啟此選項用以讓執行中的 mysql 在在記憶體高度緊張的時候,資料在記憶體中保持鎖定並且防止可能被 swapping out,此選項對於效能有益 max_allowed_packet = 16M # 服務所能處理的請求包的最大大小以及服務所能處理的最大的請求大小(當與大的BLOB 欄位一起工作時相當必要), 每個連線獨立的大小.大小動態增加。 設定最大包,限制server接受的資料包大小,避免超長SQL的執行有問題 預設值為16M,當MySQL客戶端或mysqld # 伺服器收到大於 max_allowed_packet 位元組的資訊包時,將發出“資訊包過大”錯誤,並關閉連線。對於某些客戶端,如果通訊資訊包過大,在執行查詢期間,可能會遇到“丟失與 MySQL 伺服器的連線”錯誤。預設值 16M。 myisam_sort_buffer_size=128M #MyISAM 設定恢復表之時使用的緩衝區的尺寸,當在REPAIR TABLE 或用 CREATE INDEX 建立索引或 ALTER TABLE 過程中排序 MyISAM 索引分配的緩衝區 tmp_table_size=32M #臨時表的最大大小,如果超過該值,則結果放到磁碟中,此限制是針對單個表的,而不是總和. table_open_cache = 512 thread_cache_size = 8 # 我們在 cache 中保留多少執行緒用於重用.當一個客戶端斷開連線後,如果 cache 中的執行緒還少於 thread_cache_size,則客戶端執行緒被放入 cache 中.這可以在你需要大量新連線的時候極大的減少執行緒建立的開銷(一般來說如果你有好的執行緒模型的話, #這不會有明顯的效能提升.)伺服器執行緒快取這個值表示可以重新利用儲存在快取中執行緒的數量,當斷開連線時如果快取中還有空間,那麼客戶端的執行緒將被放到快取中,如果執行緒重新被請求,那麼請求將從快取中讀取,如果快取中是空的或者是新的請求,那麼這個執行緒將被重新建立, #如果有很多新的執行緒,增加這個值可以改善系統性能.通過比較 Connections 和 Threads_created 狀態的變數,可以看到這個變數的作用 #根據實體記憶體設定規則如下: #1G —> 8 #2G —> 16 #3G —> 32 #大於3G —> 64 wait_timeout = 86400 #等待關閉連線的時間 interactive_timeout = 86400 #關閉連線之前,允許 interactive_timeout(取代了wait_timeout)秒的不活動時間。客戶端的會話 wait_timeout 變數被設為會話interactive_timeout 變數的值。如果前端程式採用短連線,建議縮短這2個值, 如果前端程式採用長連線,可直接註釋掉這兩個選項,預設配置(8小時) max_connections = 600 #指定MySQL允許的最大連線程序數。如果在訪問資料庫時經常出現"Too Many Connections"的錯誤提 示,則需要增大該引數值 # Try number of CPU's*2 for thread_concurrency #thread_concurrency = 32 #isolation level and default engine default-storage-engine = INNODB transaction-isolation = READ-COMMITTED server-id = 1739 #MySQL服務的ID basedir = /opt/module/mysql #MySQL程式路徑 datadir = /opt/module/mysql/data #資料目錄 pid-file = /opt/module/mysql/data/hostname.pid #pid檔案路徑 #open performance schema log-warnings sysdate-is-now binlog_format = ROW log_bin_trust_function_creators=1 log-error = /opt/module/mysql/data/hostname.err log-bin = /opt/module/mysql/arch/mysql-bin expire_logs_days = 7 innodb_write_io_threads=16 relay-log = /opt/module/mysql/relay_log/relay-log relay-log-index = /opt/module/mysql/relay_log/relay-log.index relay_log_info_file= /opt/module/mysql/relay_log/relay-log.info log_slave_updates=1 gtid_mode=OFF enforce_gtid_consistency=OFF # slave slave-parallel-type=LOGICAL_CLOCK slave-parallel-workers=4 master_info_repository=TABLE relay_log_info_repository=TABLE relay_log_recovery=ON #other logs #general_log =1 #general_log_file = /opt/module/mysql/data/general_log.err #slow_query_log=1 #slow_query_log_file=/opt/module/mysql/data/slow_log.err #for replication slave sync_binlog = 500 #for innodb options innodb_data_home_dir = /opt/module/mysql/data/ innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend innodb_log_group_home_dir = /opt/module/mysql/arch innodb_log_files_in_group = 4 innodb_log_file_size = 1G innodb_log_buffer_size = 200M #根據生產需要,調整pool size innodb_buffer_pool_size = 2G #innodb_additional_mem_pool_size = 50M #deprecated in 5.6 tmpdir = /opt/module/mysql/tmp innodb_lock_wait_timeout = 1000 #innodb_thread_concurrency = 0 innodb_flush_log_at_trx_commit = 2 innodb_locks_unsafe_for_binlog=1 #innodb io features: add for mysql5.5.8 performance_schema innodb_read_io_threads=4 innodb-write-io-threads=4 innodb-io-capacity=200 #purge threads change default(0) to 1 for purge innodb_purge_threads=1 innodb_use_native_aio=on #case-sensitive file names and separate tablespace innodb_file_per_table = 1 lower_case_table_names=1 [mysqldump] quick max_allowed_packet = 128M [mysql] no-auto-rehash default-character-set=utf8mb4 [mysqlhotcopy] interactive-timeout [myisamchk] key_buffer_size = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M
- 建立使用者組及使用者
[root@localhost module]# groupadd -g 101 dba
建立組id為101 名為
dba
的組
[root@localhost module]# useradd -u 514 -g dba -G root -d /opt/module/mysql mysqladmin
增加使用者id為514 使用者的主組為dba 使用者的附加組為root 使用者的家目錄為/opt/module/mysql mysqladmin是使用者名稱
useradd表示:增加使用者
-u 514:表示指定使用者的id為514
-g data:表示指定使用者的主組為data
-G root:表示指定使用者的附加組為root
-d /opt/module/mysql:表示使用者的家目錄
mysqladmin:表示使用者名稱
[root@localhost module]# id mysqladmin
Linux id命令用於顯示使用者的ID,以及所屬群組的ID。
顯示:uid=514(mysqladmin) gid=101(dba) groups=101(dba),0(root)
一般不需要設定mysqladmin的密碼,直接從root或者LDAP使用者sudo切換
- [root@localhost module]# passwd mysqladmin
Changing password for user mysqladmin.
New UNIX password: //填寫mysqladmin使用者的密碼 我寫1234
BAD PASSWORD: it is too simplistic/systematic //警告太簡單
Retype new UNIX password: //不管 再次填寫
passwd: all authentication tokens updated successfully. //成功
if user mysqladmin is existing,please execute the following command of usermod.
[root@localhost module]# usermod -u 514 -g dba -G root -d /opt/module/mysql mysqladmin
usermod 用於修改使用者帳號
-u][使用者帳號]
-g <主群組>
-d <登入目錄>
-G <群組>
要修改使用者
- copy 環境變數配置檔案至mysqladmin使用者的
家
目錄中(上面配置過mysql使用者的家目錄),為了以下步驟配置個人環境變數
[root@localhost module]# cp /etc/skel/.* /opt/module/mysql
--important
/etc/skel/目錄是用來存放新使用者配置檔案的目錄,當我們新增新使用者的時候,這個目錄下的所有檔案會自動被複制到新新增的使用者的家目錄下。
這個目錄下的所有檔案都是隱藏檔案(以.點開頭的檔案)。
通過修改、新增、刪除/etc/skel目錄下的檔案,可為新建立的使用者提供統一的、標準的、初始化使用者環境。
- 配置環境變數
[root@localhost module]# vi mysql/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
export MYSQL_BASE=/opt/module/mysql
export PATH=${MYSQL_BASE}/bin:$PATH
unset USERNAME
#stty erase ^H
set umask to 022
umask 022
PS1=`uname -n`":"'$USER'":"'$PWD'":>"; export PS1
## end
-
賦許可權和使用者組,切換使用者mysqladmin,安裝
[root@localhost module]# chown mysqladmin:dba /etc/my.cnf
[root@localhost module]# chmod 640 /etc/my.cnf
[root@localhost module]# chown -R mysqladmin:dba /opt/module/mysql
[root@localhost module]# chmod -R 755 /opt/module/mysql
-
配置服務及開機自啟動
[root@localhost module]# cd /opt/module/mysql
- 將服務檔案拷貝到init.d下,並重命名為mysql
[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysql
- 賦予可執行許可權
[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysql
- 刪除服務
[root@localhost mysql]# chkconfig --del mysql
- 新增服務
[root@localhost mysql]# chkconfig --add mysql
[root@localhost mysql]# chkconfig --level 345 mysql on
- 安裝libaio及安裝mysql的初始db
[root@localhost mysql]# yum -y install libaio
[root@localhost mysql]# sudo su - mysqladmin
變為->localhost.ruoze:mysqladmin:/opt/module/mysql:>
localhost.ruoze:mysqladmin:/opt/module/mysql:> bin/mysqld \
--defaults-file=/etc/my.cnf \
--user=mysqladmin \
--basedir=/opt/module/mysql/ \
--datadir=/opt/module/mysql/data/ \
--initialize
按回車 出現完成
在初始化時如果加上–initial-insecure
,則會建立空密碼的 root@localhost 賬號,否則會建立帶密碼的 root@localhost 賬號,密碼直接寫在 log-error 日誌檔案中
(在5.6版本中是放在 ~/.mysql_secret 檔案裡,更加隱蔽)
-
檢視臨時密碼
localhost.localdomain:mysqladmin:/opt/module/mysql/data:>**cat hostname.err |grep password**
2017-07-22T02:15:29.439671Z 1 [Note] A temporary password is generated for root@localhost: kFCqrXeh2y(0
localhost.localdomain:mysqladmin:/opt/module/mysql/data:>
-
啟動
/opt/module/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
-
登入及修改使用者密碼
localhost.localdomain:mysqladmin:/opt/module/mysql/data:>**mysql -uroot -p'kFCqrXeh2y(0'**
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.11-log
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
修改mysql密碼
mysql> alter user root@localhost identified by '1234';
Query OK, 0 rows affected (0.05 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '1234' ;
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;
Bye
- 重啟
localhost.localdomain:mysqladmin:/opt/module/mysql:> service mysql restart
localhost.localdomain:mysqladmin:/opt/module/mysql/data:>mysql -uroot -p1234
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.11-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>