CentOS 7 安裝 MariaDB 10

??當(dāng)MySQL被Oracle收購(gòu)以后,MySQL的未來(lái)充滿了不確定性〕婀。縱觀Oracle歷史,簡(jiǎn)直是閉源收割機(jī)圃验。Oracale收購(gòu)Sun公司以后與Google打了N年官司掉伏。之前的Sun公司有兩款JDK:SunJDK擁有版權(quán)但是免費(fèi),OpenJDK開(kāi)源且免費(fèi)澳窑。這個(gè)鍋能不能甩到Google身上就看安卓有沒(méi)有使用SunJDK斧散。而 Google 也覺(jué)得自己很委屈畢竟安卓完全開(kāi)源。后來(lái)Google 誓要把 Java 從安卓陣營(yíng)中剔除出去照捡,而OracleJDK(前身是SunJDK)也走向了收費(fèi)模式。
??數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的重要性不言而喻话侧,鑒于Oracle之前很多騷操作栗精,為了避免閉源的風(fēng)險(xiǎn),社區(qū)產(chǎn)生了多個(gè)MySQL的分支瞻鹏,Mariadb與Percona是當(dāng)前兩個(gè)受歡迎的分支悲立。
??這里簡(jiǎn)單說(shuō)一下Mariadb的淵源。MySQL之父Monty創(chuàng)立了MySQL后將其賣給Sun新博,結(jié)果Sun又轉(zhuǎn)手賣給Oracle薪夕,Monty也知道Oracle不靠譜,憤而出走創(chuàng)立了MariaDB分支赫悄。從某種程度來(lái)說(shuō)MariaDB可能才是原汁原味原献。關(guān)于MariaDB名字的由來(lái)馏慨,MySQL的My并不是“我的”意思。My其實(shí)是Monty的大女兒姑隅,Maria是Monty的小女兒写隶,Monty還有一個(gè)兒子Max,所以還有一個(gè)MaxDB讲仰。

Mariadb某個(gè)版本可能只是有限兼容慕趴、實(shí)現(xiàn)了MySQL一個(gè)版本的某些功能,如果遇到問(wèn)題可以去官網(wǎng)詳查下
https://mariadb.com/kb/en/mariadb-vs-mysql-features/
Mysql 和 Mariadb 簡(jiǎn)單的版本兼容鄙陡、對(duì)應(yīng)關(guān)系:

Mariadb Mysql
10.4~10.5 8.0
10.2~10.3 5.7
10.0~10.1 5.6
5.5 5.5
5.1~5.3 5.1

對(duì)應(yīng)關(guān)系比較重要冕房,不然可能出現(xiàn)一些問(wèn)題。比如sql語(yǔ)句的datetime類型使用錯(cuò)誤會(huì)建表失敗趁矾,比如在Web項(xiàng)目中使用mysql的jdbc.driver連接耙册,pom.xml里要選擇合適的版本,否則會(huì)jdbc連接失敗等等愈魏。

一觅玻、新建repo源

cd /etc/yum.repos.d
vim Mariadb.repo

在 Mariadb.repo下添加鏡像地址,為了下載速度快些培漏,這里使用了阿里云鏡像

[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.4/centos7-amd64
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1

二溪厘、安裝Mariadb

yum install MariaDB-server

啟動(dòng)MariaDB服務(wù)并設(shè)置為開(kāi)機(jī)自啟

systemctl start mariadb
systemctl enable mariadb

使用MariaDB安全配置向?qū)?/p>

mysql_secure_installation 或者 mariadb-secure-installation

配置時(shí)出現(xiàn)的各個(gè)選項(xiàng)

Enter current password for root (enter for none): # (輸入數(shù)據(jù)庫(kù)root密碼,第一次進(jìn)入還沒(méi)有設(shè)置密碼則直接回車)
Switch to unix_socket authentication [Y/n]: # n (不使用unix_socket)
Set root password? [Y/n]: # y(root用戶設(shè)置密碼)
New password: # (新密碼)
Re-enter new password: # (再次輸入密碼)
Remove anonymous users? [Y/n]: # y (移除匿名用戶) 
Disallow root login remotely? [Y/n]:# y (拒絕root遠(yuǎn)程登錄牌柄,不管y/n畸悬,都會(huì)拒絕root遠(yuǎn)程登錄)
Remove test database and access to it? [Y/n]: # y (刪除test數(shù)據(jù)庫(kù))
Reload privilege tables now? [Y/n]: # y (重新加載權(quán)限表∩河叮或者重啟服務(wù)也許)

三蹋宦、登錄MariaDB

mysql -u root -p
Enter password:
1、修改MariaDB默認(rèn)編碼

MariaDB的默認(rèn)編碼是latin1咒锻,插入中文會(huì)亂碼冷冗,需要將編碼改為utf8。首先查看當(dāng)前字符集編碼惑艇。

MariaDB [(none)]> show variables where variable_name  like "%character%" or variable_name like "%collation%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | utf8_general_ci            |
| collation_database       | latin1_swedish_ci          |
| collation_server         | latin1_swedish_ci          |
+--------------------------+----------------------------+
  • 編輯文件/etc/my.cnf, 在[mysqld][mysqld_safe]標(biāo)簽下添加內(nèi)容:
vim /etc/my.cnf

[mysqld]
init_connect = 'SET collation_connection = utf8_general_ci'
init_connect = 'SET NAMES utf8'
character_set_server = utf8
collation_server = utf8_general_ci
skip-character-set-client-handshake
[mysqld_safe]
init_connect = 'SET collation_connection = utf8_general_ci'
init_connect = 'SET NAMES utf8'
character_set_server = utf8
collation_server = utf8_general_ci
skip-character-set-client-handshake
  • 編輯文件/etc/my.cnf.d/client.cnf, 在[client]標(biāo)簽下添加內(nèi)容:
vim /etc/my.cnf.d/client.cnf

[client]
default-character-set=utf8
  • 編輯文件/etc/my.cnf.d/mysql-clients.cnf, 在[mysql]標(biāo)簽下添加內(nèi)容:
vim /etc/my.cnf.d/mysql-clients.cnf

[mysql]
default-character-set=utf8
  • 重啟Mariadb
systemctl restart mariadb
  • 查看字符集修改結(jié)果
MariaDB [(none)]> show variables where variable_name  like "%character%" or variable_name like "%collation%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | utf8_general_ci            |
| collation_database       | utf8_general_ci            |
| collation_server         | utf8_general_ci            |
+--------------------------+----------------------------+
2蒿辙、配置root遠(yuǎn)程訪問(wèn)
  • 查詢賬號(hào)信息可以看到root賬號(hào)拒絕了遠(yuǎn)程訪問(wèn),localhost表示該賬號(hào)只能進(jìn)行本地登錄
MariaDB [(none)]> use mysql;
MariaDB [mysql]> select host,user,password from user;
+-----------+-------+-------------------------------------------+
| Host      | User  | Password                                  |
+-----------+-------+-------------------------------------------+
| localhost | root  | *BEDF7627BC4D9FBFF77B8DEAF6AD116AF6B202AC |
| localhost | mysql | invalid                                   |
+-----------+-------+-------------------------------------------+
  • 修改訪問(wèn)權(quán)限
    "%"代表所有IP滨巴,任何客戶機(jī)都可以連接
    localhost代表只可以本機(jī)連接
    %代表所有IP思灌,至于是否已經(jīng)包括localhost,各個(gè)數(shù)據(jù)庫(kù)版本也不一樣
版本 %是否包括localhost
MySQL8.0 包括
MySQL5.7 包括
MySQL5.6 不包括
MySQL5.1 不包括
MariaDB 10.3 不包括

訪問(wèn)權(quán)限為localhost的root賬號(hào)不要?jiǎng)庸。灰獎(jiǎng)犹┏ィ灰獎(jiǎng)?/code>。
我這里專門講%是否包括localhost的事情蜈垮,是因?yàn)槲以?jīng)有一個(gè)掉坑里的故事耗跛。我有一次直接把root賬戶的localhost改為了%裕照。比如下面這種:

MariaDB [mysql]> update user set host = '%' where user = 'root';

MariaDB [mysql]> select user,host from user;
+-------+-----------+
| User  | Host      |
+-------+-----------+
| root  | %         |
| mysql | localhost |
+-------+-----------+

其結(jié)果是,因?yàn)槟承┪胰f(wàn)萬(wàn)沒(méi)有想到的原因课兄,遠(yuǎn)程無(wú)法訪問(wèn)數(shù)據(jù)庫(kù)了牍氛。而當(dāng)我登錄服務(wù)器想本地登錄數(shù)據(jù)庫(kù)的時(shí)候,我發(fā)現(xiàn)%是不包括localhost的烟阐。我整個(gè)人都傻掉了搬俊,數(shù)據(jù)庫(kù)無(wú)法遠(yuǎn)程登錄也無(wú)法本地登錄。后面解決辦法是使用了匿名登錄和跳過(guò)權(quán)限驗(yàn)證進(jìn)去了蜒茄。

所以上面是一個(gè)錯(cuò)誤示范唉擂,正確的方法應(yīng)該是insert新用戶,而不是update檀葛。
下面使用權(quán)限命令新建用戶:

MariaDB [mysql]> Grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
MariaDB [mysql]> flush privileges;

identified by 后面是賬戶遠(yuǎn)程登錄的密碼玩祟。
這里需要說(shuō)明一下,不要被迷惑屿聋,雖然看上去是同為root賬戶空扎,但其實(shí)是是獨(dú)立的兩個(gè)賬戶 root@localhost 與 root@%

MariaDB [mysql]> select user,host,password from user;
+-------+-----------+-------------------------------------------+
| User  | Host      | Password                                  |
+-------+-----------+-------------------------------------------+
| root  | localhost | *BEDF7627BC4D9FBFF77B8DEAF6AD116AF6B202AC |
| mysql | localhost | invalid                                   |
| root  | %         | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------+-----------+-------------------------------------------+

它等價(jià)于新建一個(gè)用戶并添加訪問(wèn)權(quán)限。

#新建用戶yao
MariaDB [mysql]> create user 'yao'@'localhost' identified by '123';
#給yao用戶賦權(quán)
MariaDB [mysql]> grant all privileges on `yao`.* to 'yao'@'localhost';
MariaDB [mysql]> flush privileges;
  • 避免防火墻攔截遠(yuǎn)程登錄
  1. 關(guān)閉防火墻:
systemctl stop firewalld            #停止firewall
systemctl disable firewalld         #禁止firewall開(kāi)機(jī)啟動(dòng)
  1. 開(kāi)放防火墻端口润讥,開(kāi)啟3306端口,開(kāi)啟后要重啟防火墻:
firewall-cmd --query-port=3306/tcp  # 查看3306端口是否開(kāi)啟
firewall-cmd --zone=public --add-port=3306/tcp --permanent  #開(kāi)啟3306端口
firewall-cmd --reload  # 重啟防火墻
firewall-cmd --query-port=3306/tcp  # 查看3306端口是否開(kāi)啟
3. 如果想修改root賬號(hào)密碼
MariaDB [(none)]> SET password for 'root'@'localhost'=password('newpassword');
MariaDB [(none)]> exit;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末转锈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子楚殿,更是在濱河造成了極大的恐慌撮慨,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脆粥,死亡現(xiàn)場(chǎng)離奇詭異砌溺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)变隔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門规伐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人匣缘,你說(shuō)我怎么就攤上這事猖闪。” “怎么了孵户?”我有些...
    開(kāi)封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵萧朝,是天一觀的道長(zhǎng)岔留。 經(jīng)常有香客問(wèn)我夏哭,道長(zhǎng),這世上最難降的妖魔是什么献联? 我笑而不...
    開(kāi)封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任竖配,我火速辦了婚禮何址,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘进胯。我一直安慰自己用爪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布胁镐。 她就那樣靜靜地躺著偎血,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盯漂。 梳的紋絲不亂的頭發(fā)上颇玷,一...
    開(kāi)封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音就缆,去河邊找鬼帖渠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛竭宰,可吹牛的內(nèi)容都是我干的空郊。 我是一名探鬼主播斩例,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼荧降,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了巡验?” 一聲冷哼從身側(cè)響起伴箩,我...
    開(kāi)封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤入愧,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后嗤谚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體棺蛛,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年巩步,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旁赊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡椅野,死狀恐怖终畅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竟闪,我是刑警寧澤离福,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站炼蛤,受9級(jí)特大地震影響妖爷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜理朋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一絮识、第九天 我趴在偏房一處隱蔽的房頂上張望绿聘。 院中可真熱鬧,春花似錦次舌、人聲如沸熄攘。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挪圾。三九已至,卻和暖如春逐沙,著一層夾襖步出監(jiān)牢的瞬間洛史,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工酱吝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留也殖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓务热,卻偏偏與公主長(zhǎng)得像忆嗜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子崎岂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容