数据库设置_CentOS7 - 设置MySQL数据库
設(shè)置MySQL數(shù)據(jù)庫(kù)
本文介紹如何在CentOS上執(zhí)行流行的MySQL數(shù)據(jù)庫(kù)服務(wù)器的基本安裝。 MySQL是當(dāng)今使用最廣泛的數(shù)據(jù)庫(kù)系統(tǒng),它可以在許多不同的行業(yè)中找到,為動(dòng)態(tài)網(wǎng)站和大型數(shù)據(jù)倉(cāng)庫(kù)等各種產(chǎn)品提供數(shù)據(jù)存儲(chǔ)。
準(zhǔn)備
此配方要求CentOS系統(tǒng)具有有效的網(wǎng)絡(luò)連接和管理權(quán)限,使用root帳戶或sudo。
怎么做
請(qǐng)按照以下步驟安裝MySQL并創(chuàng)建新數(shù)據(jù)庫(kù):
- 下載Oracle維護(hù)的MySQL存儲(chǔ)庫(kù)的存儲(chǔ)庫(kù)配置包:
- 安裝下載的包:
- 現(xiàn)在已經(jīng)注冊(cè)了MySQL存儲(chǔ)庫(kù),安裝mysql-community-serverpackage:
- 啟動(dòng)MySQL服務(wù)器并使其在系統(tǒng)重新啟動(dòng)時(shí)自動(dòng)啟動(dòng):
- 在系統(tǒng)的防火墻中打開端口3306以允許外部連接到MySQL:
- 從服務(wù)器的日志文件中檢索MySQL的root用戶的臨時(shí)密碼:
- 使用mysqladmin為root設(shè)置新密碼。 當(dāng)程序提示輸入當(dāng)前密碼時(shí),請(qǐng)輸入日志中的臨時(shí)密碼:
- 使用mysql使用root帳戶連接到MySQL服務(wù)器:
- 要?jiǎng)?chuàng)建新數(shù)據(jù)庫(kù),請(qǐng)執(zhí)行CREATE DATABASE語(yǔ)句:
- 執(zhí)行FLUSH PRIVILEGES以指示MySQL重建其權(quán)限緩存:
- 退出MySQL客戶端并返回終端:
工作原理
我們首先下載了在我們的系統(tǒng)上注冊(cè)O(shè)racle維護(hù)的MySQL存儲(chǔ)庫(kù)的軟件包。 MySQL是從Oracle存儲(chǔ)庫(kù)安裝的,因?yàn)镃entOS存儲(chǔ)庫(kù)安裝了MariaDB。 經(jīng)過2008年至2010年的一系列收購(gòu),MySQL代碼庫(kù)和商標(biāo)成為Oracle的財(cái)產(chǎn)。 對(duì)Oracle的管理和MySQL的未來的廣泛關(guān)注促使MySQL的一個(gè)原始開發(fā)人員分叉項(xiàng)目并啟動(dòng)MariaDB。 2014年,Red Hat和CentOS存儲(chǔ)庫(kù)將MySQL替換為MariaDB的默認(rèn)數(shù)據(jù)庫(kù)(歡迎來到開源政治領(lǐng)域)。
注意
MariaDB的目標(biāo)是在GNU GPL許可下保持一個(gè)免費(fèi)的開源項(xiàng)目,并成為MySQL的“增強(qiáng)型,替代品”。目前,兩者之間的差異對(duì)于臨時(shí)用戶來說可以忽略不計(jì)。但在分叉替換的世界中,主要是編程接口和通信協(xié)議保持兼容。核心功能最初可能保持不變,但隨著時(shí)間的推移,新功能會(huì)獨(dú)立添加,并且產(chǎn)品的功能集開始出現(xiàn)分歧。 MariaDB通過版本號(hào)的跳躍來承認(rèn)這一點(diǎn)。 MariaDB 5.1提供與MySQL 5.1相同的功能,MariaDB 5.5 for MySQL 5.5也是如此。但是,MariaDB不打算實(shí)現(xiàn)MySQL 5.6的所有功能,并將其版本號(hào)更改為10.0。對(duì)于那些在家中保持分?jǐn)?shù)的人來說,Oracle編寫的存儲(chǔ)庫(kù)在撰寫本文時(shí)主持了MySQL 5.7。 CentOS存儲(chǔ)庫(kù)目前提供MariaDB 5.5。
托管軟件包的服務(wù)器假定人們使用Web瀏覽器下載文件并發(fā)出重定向以開始下載。由于我們使用curl,因此我們提供了-L參數(shù)來跟蹤重定向以到達(dá)實(shí)際的包:
curl -LO dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm接下來,我們安裝了下載的包。 一旦注冊(cè)了存儲(chǔ)庫(kù),我們就可以使用mysql-community-server軟件包安裝MySQL。 該軟件包安裝服務(wù)器二進(jìn)制文件,與MySQL一起使用的客戶端實(shí)用程序作為依賴項(xiàng)安裝:
yum install mysql57-community-release-el7-7.noarch.rpmyum install mysql-community-serverMySQL維護(hù)自己的用戶帳戶,其管理用戶名為root。 就像CentOS的root用戶一樣,您不應(yīng)該將該帳戶用于常規(guī)活動(dòng); 它應(yīng)該保留用于管理任務(wù),例如創(chuàng)建新用戶,授予權(quán)限和刷新服務(wù)器的緩存。 其他權(quán)限較低的帳戶應(yīng)該用于日常活動(dòng)。 為了保護(hù)root帳戶,我們?cè)诘谝淮螁?dòng)MySQL服務(wù)器時(shí)隨機(jī)生成密碼。 我們需要搜索MySQL記錄密碼的日志文件,以便我們可以設(shè)置我們自己選擇的新密碼:
grep "temporary password" /var/log/mysqld.log知道了臨時(shí)密碼,我們用mysqladmin來改變它。 -u選項(xiàng)提供MySQL帳戶的用戶名,-p提示我們輸入帳戶的密碼,password是實(shí)用程序用于更改密碼的子命令。 我們?cè)谔崾据斎朐济艽a時(shí)輸入了臨時(shí)密碼,然后我們被要求輸入并確認(rèn)新密碼:
mysqladmin -u root -p password注意
root的隨機(jī)默認(rèn)密碼是從MySQL 5.6開始的新行為,它將密碼寫入/root/.mysql_secret,而5.7將其寫入日志文件。 在舊版本中,因此由CentOS存儲(chǔ)庫(kù)安裝的MariaDB自5.5以來,密碼為空。 validate_password插件也在MySQL 5.7中激活。 它要求密碼為八個(gè)字符或更多,至少有一個(gè)數(shù)字,一個(gè)大寫和一個(gè)小寫字符,以及一個(gè)特殊字符(即標(biāo)點(diǎn)符號(hào))。 選擇root的新密碼時(shí)請(qǐng)考慮這些要求。
設(shè)置root的永久密碼需要臨時(shí)密碼
我們可以使用幾個(gè)客戶端連接到MySQL并與我們的數(shù)據(jù)庫(kù)進(jìn)行交互。 這個(gè)配方使用了mysql,因?yàn)樗J(rèn)安裝為依賴項(xiàng)。 同樣,-u標(biāo)識(shí)帳戶的用戶名,-p提示我們輸入密碼:
mysql -u root -p在交互模式下運(yùn)行時(shí),客戶端顯示我們提交SQL語(yǔ)句的提示mysql>。 在每次查詢之后,客戶端顯示服務(wù)器的響應(yīng),語(yǔ)句執(zhí)行的時(shí)間以及服務(wù)器是否報(bào)告任何錯(cuò)誤或警告。
我們?cè)谔崾痉幇l(fā)出了CREATE DATABASE語(yǔ)句,以創(chuàng)建名為packt的新數(shù)據(jù)庫(kù):
CREATE DATABASE packt;然后我們使用CREATE USER創(chuàng)建了一個(gè)新的用戶帳戶,以避免在我們的日常工作中使用root。 該帳戶名為tboronczyk,允許從localhost進(jìn)行身份驗(yàn)證:
CREATE USER "tboronczyk"@"localhost" IDENTIFIED BY "P@$$w0rd";如果帳戶將從其他系統(tǒng)連接到服務(wù)器,則系統(tǒng)的主機(jī)名或IP地址可以替換localhost。 MySQL將每個(gè)用戶名和主機(jī)名對(duì)視為單獨(dú)的帳戶,例如tboronczyk @ localhost和tboronczyk @ 192.168.56.100是不同的帳戶,可以分配不同的權(quán)限。
注意
您可以在主機(jī)名中使用通配符來創(chuàng)建可以從多個(gè)系統(tǒng)連接的帳戶。 %通配符匹配零個(gè)或多個(gè)字符,因此可用于表示任何系統(tǒng):
CREATE USER "tboronczyk"@"%" IDENTIFIED BY "P@$$w0rd";創(chuàng)建新帳戶時(shí)沒有任何權(quán)限,因此我們必須通過執(zhí)行GRANT語(yǔ)句來分配它們:
GRANT CREATE, DROP, ALTER, LOCK TABLES, INSERT, UPDATE, SELECT, DELETE ON packt.* TO "tboronczyk"@"localhost";該語(yǔ)句為packt數(shù)據(jù)庫(kù)中的所有表(用*表示)分配以下權(quán)限:
- CREATE: 這允許用戶創(chuàng)建數(shù)據(jù)庫(kù)和表
- DROP: 這允許用戶刪除整個(gè)表和數(shù)據(jù)庫(kù)
- ALTER: 這允許用戶更改現(xiàn)有表的定義
- LOCK TABLES: 這允許用戶鎖定表以進(jìn)行獨(dú)占讀或?qū)懺L問INDEX: This allows the user to create table indexes
- INSERT: 這允許用戶將記錄添加到表中
- UPDATE: 這允許用戶更新表中的記錄
- SELECT: 這允許用戶從表中檢索記錄
- DELETE: 這允許用戶從表中刪除記錄
完整的權(quán)限列表以及允許用戶執(zhí)行的操作可以在http://dev.mysql.com/doc/refman/5.7/en/grant.html上的官方MySQL文檔中找到。
接下來,我們指示MySQL使用FLUSH PRIVILEGES重建其權(quán)限緩存:
FLUSH PRIVILEGES;當(dāng)MySQL啟動(dòng)時(shí),它會(huì)將用戶和權(quán)限信息緩存在內(nèi)存中(您將從第5章“管理文件系統(tǒng)和存儲(chǔ)”中回憶起,從內(nèi)存讀取比從磁盤讀取要快得多),然后每次用戶執(zhí)行時(shí)檢查緩存驗(yàn)證他們是否具有足夠權(quán)限的操作。每當(dāng)我們創(chuàng)建或刪除用戶帳戶或授予或撤銷帳戶的權(quán)限時(shí),我們都需要告訴MySQL更新其緩存,否則我們的更改將在MySQL下次啟動(dòng)時(shí)被忽視。
當(dāng)使用mysql連接到MySQL時(shí),您可能經(jīng)常使用其他選項(xiàng)調(diào)用它。常見選項(xiàng)是-h,如果MySQL在不同的系統(tǒng)上運(yùn)行,它將標(biāo)識(shí)遠(yuǎn)程服務(wù)器的主機(jī)名或IP地址。 -e直接執(zhí)行語(yǔ)句,而不是以交互方式啟動(dòng)mysql。此外,要使用特定數(shù)據(jù)庫(kù),可以在命令的其余部分之后給出名稱,也可以使用-D來指定它。以下示例通過連接到192.168.56.100上的MySQL服務(wù)器并對(duì)其sakila數(shù)據(jù)庫(kù)執(zhí)行SELECT語(yǔ)句來演示所有這些:
mysql -u tboronczyk -p -h 192.168.56.100 -D sakila -e "SELECT last_name, first_name FROM actor"See also
Refer to the following resources for more information on working with MySQL:
- The mysql manual page (man 1 mysql)
- MySQL 5.7 reference manual (http://dev.mysql.com/doc/refman/5.7/en)
- Jump Start MySQL (http://www.amazon.com/Jump-Start-MySQL-Timothy-Boronczyk/dp/0992461286)
- MySQL Tutorial (http://www.mysqltutorial.org/)
總結(jié)
以上是生活随笔為你收集整理的数据库设置_CentOS7 - 设置MySQL数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: es内嵌文档查询_ElasticSear
- 下一篇: mac mysql密码错误_解决mac