您好,登錄后才能下訂單哦!
永久更改主機名
[root@Centos3 mysql-5.7.26]# hostnamectl set-hostname mysql-srv3
yum -y install lrzsz
rz
Web架構(gòu)之mysql服務器
1、 Mysql概述:
1.1、 Mysql概述
MySQL 是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典 MySQL AB 公司開發(fā),目前屬于 Oracle 公司。
MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在 WEB 應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫管理系統(tǒng))應用軟件之一。
MySQL 是一種關(guān)聯(lián)數(shù)據(jù)庫管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL 所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標準化語言。MySQL 軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL作為網(wǎng)站數(shù)據(jù)庫。由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境。
雙授權(quán)政策:開放源代碼版本和商業(yè)版本。 例如:很多公司出售應用軟件,例如 Microsoft、Apple 和 Oracle;如 Red Hat 和 IBM,則通過為其開放源代碼軟件提供銷售支援、托管或咨詢等服務來進行賺錢。企業(yè)可以通過開放源代碼發(fā)布他們的軟件,也可以同時銷售該軟件的商業(yè)版本。
1.2、 SQL概述
結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴展名。
從上可以看出我們數(shù)據(jù)庫相關(guān)工作職位大概兩種:DBD和DBA
dba是數(shù)據(jù)庫管理員database administrator
dbd是數(shù)據(jù)庫開發(fā)人員database developer
SQL 是1986年10 月由美國國家標準局(ANSI)通過的數(shù)據(jù)庫語言美國標準,接著,國際標準化組織(ISO)頒布了SQL正式國際標準。1989年4月,ISO提出了具有完整性特征的SQL89標準,1992年11月又公布了SQL92標準,在此標準中,把數(shù)據(jù)庫分為三個級別:基本集、標準集和完全集。
1.3、 SQL語句結(jié)構(gòu)
結(jié)構(gòu)化查詢語言包含6個部分
1.3.1、 數(shù)據(jù)查詢語言(DQL)
其語句,也稱為“數(shù)據(jù)檢索語句”,就是從表中查詢數(shù)據(jù)。
1.3.2、 數(shù)據(jù)操作語言(DML):
在表中添加,修改和刪除數(shù)據(jù)記錄。也稱為動作查詢語言。
1.3.3、 事務處理語言(TPL):
它由多條sql語句組成的整體,它的語句能確保被DML語句修改的表中的所有記錄及時得到更新。
1.3.4、 數(shù)據(jù)控制語言(DCL):
設置數(shù)據(jù)庫的訪問權(quán)限。
1.3.5、 數(shù)據(jù)定義語言(DDL):
在數(shù)據(jù)庫中創(chuàng)建表或刪除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。
1.3.6、 指針控制語言(CCL):
它的語句,像DECLARE CURSOR,F(xiàn)ETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作。
2、 源碼安裝mysql
2.1、 準備實驗環(huán)境
2.1.1、 準備源碼包
方法一:
上傳mysql安裝包和boost安裝包到我們的服務器上
[root@cong11 ~]# ls
anaconda-ks.cfg boost_1_59_0.tar.bz2 mysql-5.7.26.tar.gz
方法二:
mysql下載地址:
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
注意:官網(wǎng)提供下載的源碼包為mysql-community-5.7.26-1.el7.src.rpm以.src.rpm結(jié)尾的rpm包,需要rpm -ivh安裝這個包,在當先目錄下生成rpmbuild的目錄文件,然后在rpmbuild/SOURCES/目錄下才是我們.tar.gz結(jié)尾的源碼包。
2.1.2、 配置本地yum源
[root@cong11 ~]# mount /dev/sr0 /mnt
[root@cong11 ~]# vim /etc/yum.repos.d/centos7.repo
[centos7]
name=CentOS7
baseurl=file:///mnt
enable=1
gpgcheck=0
[root@cong11 ~]# yum clean all
[root@cong11 ~]# yum makecache
[root@cong11 ~]# yum –y groupinstall base
卸載boost
MySQL從5.7版本之后,必須有boost支持,建議把系統(tǒng)自帶的boost庫卸載,使用高版本。
[root@cong11 ~]# yum -y remove boost-*
解壓我們上傳的boost_1_59_0.tar.bz2到root目錄下,待會安裝直接指定boost目錄。
安裝bzip2解壓工具,解壓縮boost_1_59_0.tar.bz2
[root@cong11 ~]# yum install -y bzip2
[root@cong11 ~]# tar -jxvf boost_1_59_0.tar.bz2
2.1.3、 卸載系統(tǒng)自帶的mysql
#rpm –qa | grep –E ‘(mysql|mariadb)’
#rpm –e mariadb --nodeps
[root@cong11 ~]# yum -y remove mysql
[root@cong11 ~]# yum -y remove mariadb
2.2、 安裝mysql
2.2.4、 安裝MYSQL依賴包
Mysql需要使用cmake來進行編譯,所以需要安裝cmake,并且5.7版本cmake版本不低于2.8
[root@cong11 ~]# yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel
2.2.5、 添加mysql用戶和用戶組
[root@cong11 ~]# groupadd mysql
[root@cong11 ~]# useradd -M -s /sbin/nologin -r -g mysql mysql
2.2.6、 創(chuàng)建mysql數(shù)據(jù)庫存放位置并修改目錄權(quán)限
[root@cong11 ~]# mkdir -p /usr/local/mysql/{data,log}
[root@cong11 ~]# chown -R mysql:mysql /usr/local/mysql/
注意:生產(chǎn)環(huán)境中mysql的data數(shù)據(jù)目錄會單獨放在一塊硬盤中(能夠并行寫入數(shù)據(jù)和日志提高效率)
2.2.7、 解壓源碼包
[root@cong11 ~]# tar -zxvf mysql-5.7.26.tar.gz
2.2.8、 預編譯(配置./configure)
預編譯需要我們指定安裝服務的參數(shù)或者模塊,還會對編譯環(huán)境進行測試,只有通過測試,才能進行編譯,預編譯失敗一般都是缺少編譯環(huán)境GCC或者其他的依賴包,需要我們手工安裝完依賴包后,再次進行預編譯。
[root@cong11 ~]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/root/boost_1_59_0 #指定我們剛才解壓的boost目錄
官網(wǎng)詳細地址:
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
參數(shù)注釋:
DCMAKE_INSTALL_PREFIX:指定MySQL程序的安裝目錄,默認/usr/local/mysql
DEFAULT_CHARSET:指定服務器默認字符集,默認latin1
DEFAULT_COLLATION:指定服務器默認的校對規(guī)則,默認latin1_general_ci
ENABLED_LOCAL_INFILE:指定是否允許本地執(zhí)行LOAD DATA INFILE,默認OFF
WITH_COMMENT:指定編譯備注信息
WITH_xxx_STORAGE_ENGINE:指定靜態(tài)編譯到mysql的存儲引擎,MyISAM, MERGE,MEMBER以及CSV四種引擎默認即被編譯至服務器,不需要特別指定。
WITHOUT_xxx_STORAGE_ENGINE:指定不編譯的存儲引擎
SYSCONFDIR:初始化參數(shù)文件目錄
MYSQL_DATADIR:數(shù)據(jù)文件目錄
MYSQL_TCP_PORT:服務端口號,默認3306
MYSQL_UNIX_ADDR:socket文件路徑,默認/tmp/mysql.sock
檢測命令執(zhí)行結(jié)果
[root@cong11 ~]# echo $? #0說明上條命令執(zhí)行成功,其他執(zhí)行失敗
0
2.2.9、 編譯
[root@cong11 ~]# make -j $( grep processor /proc/cpuinfo | wc -l)
make -j 4 #注:-j 用來指定CPU核心數(shù),可加快編譯速度。
檢測命令執(zhí)行結(jié)果
[root@cong11 ~]# echo $?
0
查看服務器CPU核心數(shù)
[root@cong11 ~]# grep processor /proc/cpuinfo | wc -l
4
2.2.10、 安裝
[root@cong11 ~]# make install
檢測命令執(zhí)行結(jié)果
[root@cong11 ~]# echo $?
0
2.2.11、 修改mysql目錄權(quán)限
[root@cong11 mysql-5.7.26]# chown -R mysql:mysql /usr/local/mysql/
2.2.12、 生成my.cnf配置文件
備份配置文件文件
[root@cong11 ~]# mv /etc/my.cnf{,.bak} === mv /etc/my.cnf /etc/my.cnf.bak
自行創(chuàng)建my.cnf配置文件
[root@cong11 ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql #mysql安裝目錄
datadir=/usr/local/mysql/data #mysql數(shù)據(jù)存放目錄
port=3306 #mysql監(jiān)聽端口
socket=/usr/local/mysql/mysql.sock #mysql.sock文件存放目錄
symbolic-links=0 #關(guān)閉mysql的符號鏈接
character-set-server=utf8 #指定mysql的字符集為utf8
log-error=/usr/local/mysql/log/mysqld.log #指定mysql的錯誤日志存放路徑
pid-file=/usr/local/mysql/mysqld.pid #mysql的pid文件存放目錄
注意:所有my.cnf指定的目錄mysql用戶都要有讀寫權(quán)限。symbolic-links符號鏈接支持在別的目錄下存放mysql的數(shù)據(jù)庫文件,當我們mysql數(shù)據(jù)盤滿了以后,可以啟動symbolic-links=1(允許使用符號鏈接),把mysql的數(shù)據(jù)放在別的目錄下,然后鏈接到mysql的datadir目錄下。
2.2.13、 生成服務啟動腳本
[root@cong11 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@cong11 ~]# chmod +x /etc/init.d/mysqld #給腳本添加執(zhí)行權(quán)限
2.2.14、 添加mysqld開機自啟動
[root@cong11 ~]# chkconfig --add mysqld #把mysql添加到系統(tǒng)服務
[root@cong11 ~]# chkconfig mysqld on #把mysql添加到開機自啟動
[root@cong11 ~]# chkconfig --list mysqld #查看mysql開機自啟動狀態(tài)
2.2.15、 初始化數(shù)據(jù)庫(創(chuàng)建數(shù)據(jù)庫的系統(tǒng)表)
如果無法初始化先啟動mysql
[root@cong11 ~]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql \
--basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2.2.16、 啟動服務
[root@cong11 ~]# /etc/init.d/mysqld start
Starting MySQL SUCCESS!
2.2.17、 添加path路徑:
添加mysql命令路徑到path環(huán)境變量中或者把mysql命令路徑軟連接到path環(huán)境變量里已經(jīng)存在的目錄,這樣我們可以在系統(tǒng)任意位置直接執(zhí)行mysql相關(guān)命令
[root@cong11 ~]# vim /etc/profile 添加下面2行 在文件的結(jié)尾
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
使修改生效
[root@cong11 ~]# source /etc/profile
或者:
[root@cong11 ~]# ln -s /usr/local/mysql/bin/* /usr/local/bin/
2.2.18、 修改mysql密碼:
[root@cong11 ~]# mysqladmin -u root password "123456"
或者登陸到mysql修改密碼
[root@cong11 ~]# mysql
mysql> set password for 'root'@'localhost'=password('123456');
2.2.19、 登陸mysql
[root@cong11 ~]# mysql -uroot -p123456
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
課外作業(yè),管理員忘記MySQL密碼后怎么操作。
1.首先編寫 /etc/my.cnf
skip-grant-tables
2.重啟mysql服務
[root@Centos4 ~]# /etc/init.d/mysqld stop
[root@Centos4 ~]# /etc/init.d/mysqld start
3.進入mysql
[root@Centos4 ~]# mysql //此時敲回車可直接進入
mysql> update mysql.user set authentication_string=password('123.com') where user='root';
mysql>FLUSH PRIVILEGES; //刷新用戶授權(quán)信息
以上表示將root密碼更新為123.com
4.再次編輯/etc/my.cnf文件將skip-grant-tables移除
5.再次輸入密碼即可
[root@Centos4 ~]# mysql -u root -p![]
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。