mariadb 的安裝及基本配置

mariadb 的由來

MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL授權許可。開發這個分支的原因之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的潛在風險,因此社區採用分支的方式來避開這個風險。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。Red Hat Enterprise Linux/CentOS 7.0 發行版已將默認的數據庫從 MySQL 切換到 MariaDB。

mariadb-server 與連接器

進入 mariadb 的官網下載鏈接 https://mariadb.org/download/
在這裏插入圖片描述
我翻譯一下:

  • MariaDB Server 是世界上最流行的開源關係數據庫之一,並且在主流 Linux 發行版的標準倉庫中都有。可以使用操作系統的包管理器查找 mariadb-server。或者,您也可也使用如下資源
  • MariaDB 基金會爲 MariaDB Server 也提供了最流行的連接器,以供下載。

mariadb 的卸載

我這邊之前已經手動安裝過 mariadb 了。這裏爲了演示安裝,需要用 rpm 命令進行卸載。

rpm 常用參數

  • -a 查詢所有文件
  • -e 卸載
  • -i 安裝
  • -q 查詢
  • -u 升級
  • -h 顯示安裝進度
  • -R 查看依賴
  • –replacepkgs 重新安裝rpm包
  • –percent 在軟件安裝時顯示百分比

開始使用 rpm -e mariadb 卸載 mariadb,提示說 mariadb-server 依賴於 mariadb。
因此需要先卸載 mariadb-server,再卸載 mariadb。

可以使用 rpm -qR mariadb-server 查看依賴
在這裏插入圖片描述

使用 rpm -q mariadb 查詢,可以發現該卸載的均已卸載完畢了。

在這裏插入圖片描述

安裝 mariadb

老規矩,先用 Putty 連接虛擬機中的 centos

使用命令 ip addr | grep inet 查看 ip,然後使用 PuTTY 連接
在這裏插入圖片描述輸入 yum install -y mariadb-server 安裝 mariadb-server,它會自動安裝其依賴的 mariadb

在這裏插入圖片描述

mariadb 的啓停命令

  • 啓動服務
    systemctl start mariadbservice mariadb start

  • 停止服務
    systemctl stop mariadbservice mariadb stop

  • 重啓服務
    systemctl restart mariadbservice mariadb restart

  • 添加到開機啓動
    systemctl enable mariadbchkconfig mariadb on

  • 設置密碼
    mysqladmin -u root password 'xxxxxx'

  • 安全設置,以及修改數據庫管理員密碼
    mysql_secure_installation

配置 mariadb

安裝完後 mariadb,接下來就要設置賬號密碼了。

如果使用 mysqladmin -u root password 'xxxxxxx' 或 mysql_secure_installation 來配置報瞭如下錯誤,原因就是服務沒開啓。
在這裏插入圖片描述輸入 systemctl start mariadbservice mariadb start 啓動服務,然後輸入 mysql_secure_installation 配置密碼。

mysql_secure_installation

  • 第一次要求輸入密碼,直接回車
    Enter current password for root (enter for none)

  • 第二次纔是設置 root 密碼
    Set root password? [Y/n]
    New Password
    Re-enter new password

  • 是否刪除匿名用戶。Y或回車
    Remove anonymous users? [Y/n]

  • 是否禁止 root 遠程登錄。我這邊在本地測試,安全性要求不高,因此我選 n
    Disallow root login remotely? [Y/n]

  • 是否刪除數據庫。Y或回車
    Remove test databse and access to it? [Y/n]

  • 重新加載權限表。Y或回車
    Reload privilege tables now? [Y/n]
    在這裏插入圖片描述

啓動 mariadb

mysql -uroot -p<password>

注意:-u和用戶名、-p和密碼之間均沒有空格
在這裏插入圖片描述

最後鍵入 exit(帶不帶分號均可),即可正常退出。
在這裏插入圖片描述

配置字符集

進入 maridb 命令行後,鍵入 show variables like "character";show variables like "%collection%" 查看字符集
在這裏插入圖片描述

vi /etc/my.cnf

在 [mysqld] 標籤下添加

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

在這裏插入圖片描述

vi /etc/my.cnf.d/client.cnf

在 [client] 中添加

default-character-set=utf8

在這裏插入圖片描述

vi /etc/my.cnf.d/mysql-clients.cnf

在 [mysql] 中添加

default-character-set=utf8

在這裏插入圖片描述
全部配置完後,重啓 mariadb
service mariadb restart ,這個命令會被重定向到 /bin/systemctl restart mariadb.service
在這裏插入圖片描述重啓完,還是跟之前一樣,進入 mariadb:mysql -uroot -p<password>

友情提示: 我之前打錯命令,把 -uroot 打成 -rroot,結果出現 Ignoring query to other database 錯誤。所以如果出現該錯誤,請檢查登錄命令是否正確

重新輸入 show variables like "%character%";show variables like "%collation%;" 查看字符集,可以發現現在基本都統一成了utf8了。
在這裏插入圖片描述

添加用戶,設置權限

查看當前主機、用戶、密碼的哈希值

show database;
use mysql;
select host,user,password from user;

在這裏插入圖片描述

授權

grant <權限名數組 或 all privileges> on <數據庫名>.<表名> to <用戶名>@<允許的IP> identified by "<密碼>";
flush privileges;

flush privileges 命令用來刷新權限,否則修改可能不生效。

在這裏插入圖片描述使用 show grants for '<用戶名>' 可以查看授權時執行的命令
在這裏插入圖片描述

權限組有以下幾種類型,可以用逗號隔開

  1. 數據庫管理權限
權限名 權限所允許的操作
CREATE USER
FILE
GRANT OPTION
  1. 數據庫對象操作權限
權限名 權限所允許的操作
ALTER
ALTER ROUTINE
CREATE
CREATE ROUTINE
CREATE TEMPORARY TABLE
CREATE VIEW
DELETE
DROP
EVENT
EXECUTE
INDEX
INSERT
LOCK TABLE
PEFERENCE
SELECT
SHOW VIEW
TRGGER
UPDATE
  1. 其它權限
權限名 權限所允許的操作
ALL [PRIVILEGES] 所有操作權限(但不包含GRANT)
USAGE 一個特殊的“無權限”

<數據庫名>.<表名>表示授予權限的具體數據庫或表

db.table 含義
. 授予該數據庫服務器中所有數據庫的權限
db.* 授予db數據庫中所有表的權限
db.table 授予數據庫db中table表的權限

允許用戶登錄的IP

host 含義
localhost 只允許該用戶在本地登錄,不能遠程登錄
% 允許在除本機之外的任何一臺機器遠程登錄
192.168.1.1 具體IP表示僅允許用戶從該特定的IP登錄

刷新權限更變

flush privileges

創建用戶

創建用戶 create <用戶名> identified by '<password>'
查詢之前創建的用戶 select user,host,password from mysql.user where user="<用戶名>"
在這裏插入圖片描述

修改密碼

update mysql.user set password = password('<密碼>') where user = '用戶名' and host = ‘%’;
flush privileges;

刪除用戶

drop user <用戶名>@'%;'

該命令會刪除用戶以及對應的權限。執行完後,你會發現 mysql.user 表中的用戶,以及 mysql.db 表中的權限記錄都消失了。

數據庫的備份與恢復

首先進入數據庫 mysql -uroot -p<password>,創建一個測試數據庫並填充數據

MariaDB [(none)]>create database test;
MariaDB [(none)]>use test;
MariaDB [(none)]>create table book(name char(20), author char(20));
MariaDB [(none)]>insert into book values('相對論', '愛因斯坦');
MariaDB [(none)]>insert into book values('愛情公寓', '韋正');
MariaDB [(none)]>select * from book;

在這裏插入圖片描述

備份

從 mariadb 的命令行,退出到 centos 命令行。

執行 mysqldump -u root -p --all-databases > /tmp/db.dump 將數據庫備份到 /tmp.dump 中。
在這裏插入圖片描述

恢復的2種方法

備份後進入 mariadb 命令行,刪除之前創建的 test 數據庫。

[root@localhost ~]# mysql -u root -p
Mariadb [(none)] >  drop database test
Mariadb [(none)] >  show databases

在這裏插入圖片描述
此時執行 source /tmp/db.dump 即可恢復數據庫了

在這裏插入圖片描述如果不在 mariadb 命令行中,也可以直接使用 mysql -uroot -p < /tmp/db.dump 命令進行恢復(從外部恢復,不會有任何回顯)

在這裏插入圖片描述

發佈了478 篇原創文章 · 獲贊 575 · 訪問量 191萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章