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