咱們能夠將用於數據服務的數據庫分爲關係型數據庫和非關係型數據庫,關係型數據庫最典型的就是Mysql,以及和他同源的MariaDB數據庫,oracle等,非關係型數據庫則有redis數據庫,mongodb(文檔型的數據庫),ES等,將來很火的NewSQL數據庫,TiDB、Tdengine等等。mysql
下面咱們以MariaDB數據庫爲例來講在Linux中的各類操做。redis
1.安裝MariaDB數據庫sql
[root@local ~]# yum install mariadb-server mariadb -y
2.開啓數據庫服務和設置開機自動啓動mongodb
[root@local ~]# systemctl start mariadb
[root@local ~]# systemctl enable mariadb
若是在安裝或操做的過程當中,進程出現了錯誤,咱們能夠在日誌裏面去查看數據庫
[root@local ~]# cat /var/log/mariadb/mariadb.log
3.安裝完成以後,咱們用命令檢查下數據庫3306端口(默認)是否開放vim
[root@local ~]# netstat -lntup|grep mysql
或者用管道命令查看3306端口是否開放安全
[root@local ~]# netstat -lntup|grep 3306
4.在較高版本的MariaDB中,默認登陸時會產生一串隨機數密碼,可是在較低的版本(5.7.0)中,默認值是空,咱們使用的是(5.5.68-MariaDB)版本,因此給Mariadb配置登錄密碼,並使用新密碼進行登陸數據庫。oracle
[root@local ~]# mysqladmin password 'test123'
這裏咱們將密碼設置爲test123.,設置好以後沃恩能夠用命令登陸到數據庫ide
[root@local ~]# mysql -uroot -ptest123
上面一行代碼表示,咱們用root帳戶,密碼爲test123登陸到MariaDB,退出時鍵入quit便可。測試
5.修改MariaDB數據庫密碼,在修改數據庫密碼時,必須輸入原登陸帳戶和密碼,後接新密碼才能夠,
[root@local ~]# mysqladmin -uroot -ptest123 password 'test'
以上命令就是將數據庫的密碼由test123改成test,這時咱們再登陸數據庫就要用test登陸,原密碼不能再使用
能夠看到,已經登陸成功了,此時若是咱們再用原密碼登陸,則會失敗
6.找回數據庫的密碼,若是咱們忘記了root用戶的密碼,怎麼樣可以找回,咱們能夠用命令忽略受權表啓動,就是繞過密碼啓動,首先停掉數據庫,再啓動
[root@local ~]# systemctl stop mariadb
[root@local ~]# /bin/sh /usr/bin/mysqld_safe --basedir=/usr --skip-grant-table &
--skip-grant-table #此選項就是忽略受權表
& #&符號是放在後臺啓動
MariaDB>mysql
MariaDB> UPDATE mysql.user SET password=PASSWORD("oldboy123") WHERE user='root' and host='localhost';
MariaDB> flush privileges;
用以上命令將數據庫密碼設置爲test123,flush privileges命令就是讓配置生效
下面咱們就能夠用新密碼進行數據庫登陸操做
由於數據庫是講究及其安全的,咱們剛纔用了忽略受權表啓動,因此咱們要將其進程殺掉
如今3306端口已經停掉了,咱們再用密碼登陸
[root@local ~]# systemctl start mariadb
[root@local ~]# mysql -uroot -ptest123
7.數據庫用戶管理
7.1查看數據庫有哪些用戶
以上命令就是從數據庫的用戶表裏面查詢有哪些用戶
7.2 刪除用戶
drop user 'user'@'主機域';
以上代碼咱們就刪掉了一個host名爲"::1"的用戶
7.3建立用戶
由於用戶的權限大多涉及到對數據庫的各類操做,好比root用戶,它的權限極大,咱們就賦予它l域名爲localhost訪問,也就是說它只能再本地進行登陸操做,在咱們本身建立用戶的時候,能夠指定域名字段,容許在其規定的域名段內訪問數據庫,建立用戶名的語法:create user ceshi@'10.0.0.%' identified by 'ceshi123';(ceshi:數據庫用戶名,10.0.0.%:規定用戶只能在此端內訪問數據庫,ceshi123:數據庫用戶密碼)
用戶默認是沒有權限的,下面是受權的方法
7.3.1查看用戶權限:show grants for ceshi@'10.0.0.%';
顯示能夠登陸可是沒有權限,而且咱們設置的密碼系統通過了加密。
7.3.2 用戶受權
咱們受權某一個用戶管理某一個數據庫,前提是咱們在整個數據庫中有此庫存在,咱們先來看一下有哪些數據庫
咱們就以test庫爲例,將ceshi用戶賦予管理此庫的權限
以上命令旨在ceshi用戶擁有管理test庫下全部數據的一切權限,查看一下受權,測試用戶就會有一個管理數據庫的權限
7.4 直接增長用戶權限
grant all privileges on dbname.* to username@localhost identified by 'passwd';
可是新版的MariaDB數據庫支持用戶和權限分離,這樣安全性更高一些,當咱們全部用戶建立完成後,都要執行:flush privileges;讓配置生效。
這裏有一個重要的問題,就是本身建立的用戶,其用戶自己是否再有執行建立用戶的權限,這個是相當重要的,因此咱們在實際的工做當中,不能給建立的用戶:grant all privileges,全部權限
all privileges包含如下全部能執行的權限:
SELECT 查詢(數據)
INSERT 插入(數據)
UPDATE 修改(數據)
DELETE 刪除(數據)
=============================================
CREATE 建立(數據庫、表等對象)
DROP 刪除(數據庫、表等對象)
RELOAD 重載
SHUTDOWN 關閉
PROCESS 進程
FILE 文件
REFERENCES 參考資料
INDEX 索引
ALTER 修改(數據庫、表等對象)
SHOW DATABASES 查看數據庫
SUPER 超級權限
CREATE TEMPORARY TABLES 建立臨時表
LOCK TABLES 鎖表
EXECUTE 執行
REPLICATION SLAVE 從複製權限
REPLICATION CLIENT 從客戶端複製
CREATE VIEW 建立視圖
SHOW VIEW 查看視圖
CREATE ROUTINE 建立存儲過程
ALTER ROUTINE 修改存儲過程
CREATE USER 建立用戶
EVENT 事件
TRIGGER 觸發器
CREATE TABLESPACE 建立表空間
因此在實際生產環境中,咱們能夠給建立的用戶分配部分權限,命令能夠這樣:
grant SELECT,INSERT,UPDATE,DELETE on test.* to ceshi@localhost identified by 'test123';
只容許有增刪改查的權限。
7.數據庫表管理
7.1查看庫
7.2查看當前使用的庫
咱們目前在test庫下
7.3 查看庫下的表
這裏顯示爲空,由於咱們尚未在此庫下建立表,爲更加直觀的表示,咱們選擇blog庫,查看其數據表的結構
能夠看到blog庫下建立了數據表,咱們如今能夠查看一下blog_users一列的信息
如下方法也是查看blog_users一列的信息,二者同樣
8.數據庫管理
8.1建立數據庫
8.2查看建庫的語句
能夠看見數據庫默認的字符是拉丁字符,稍後咱們在配置文件中修改默認字符集,工做字符是:utf8,gbk,utf8mb4,修改之一的作法就是咱們建立一個utf8的數據庫,這樣在插入中文的時候就不會亂碼
8.3刪除庫
9.數據表
9.1建立數據表
9.2 查看建表語句:
這裏須要注意的是,表是在庫下面,因此先有庫,再有表。
9.3 修改表的名稱
9.4刪除表
9.5 表中插入數據
9.6 查看錶結構
9.7解決表中中文亂碼,修改字符集配置文件
9.7.1備份和修改配置服務端文件
9.7.2修改客戶端配置文件
這個時候咱們回到數據庫裏面,發現依然是亂碼
查看建庫和建表語句,發現原來他們的初始默認字符是拉丁
9.8更改字符集
能夠將數據庫文件導出來,作一次備份,臨時放到/tmp下面
[root@local ~]# mysqldump -uroot -ptest123 -B test>/tmp/a.sql
[root@local /tmp]# vim a.sql
如今咱們將修改過的文件導入到數據庫中,由於咱們已經作過備份,因此能夠將數據庫中的表刪除
利用寫入重定向命令,將編輯好的文件導入數據庫
能夠看到,test數據庫已經存在了,爲保證修改過的數據庫文可以正常加載運行,咱們建議先停掉數據庫服務,再從新啓動
1 [root@local /tmp]# systemctl stop mariadb 2 [root@local /tmp]# systemctl start mariadb 3 [root@local /tmp]# mysql -uroot -ptest123
能夠看到,咱們已經成功將字符集修改,在表中插入中文,再也不顯示亂碼,這就是修改字符集的方法之一。固然還能夠用命令行去修改字符集。
9.9更新數據庫(update)
咱們以test庫爲例,來修改(更新)數據表中id=4的字段
再有,咱們也能夠修改(更新)數據表中某一行的某一列,好比咱們修改test1表中的第一行的第四列
或者
以上咱們取name或者id均可以將數據更新,由於他們都在同一行。
9.10 刪除數據表中的字段
仍然使用test1數據表,如今刪除id=4的行,咱們就能夠有以下操做
固然,咱們也能夠同時刪除多個行
在這裏,有個邏輯概念,就是咱們在刪除多個id行的時候,不能用and,由於一個表中不可能同時有二者或二者以上id是相同的狀況,因此咱們若是在命令中使用and來並列刪除,會出現邏輯錯誤。
還有一個須要注意的是,咱們在刪除的時候,極其危險,咱們必定要在delete 後面跟條件where ,如若否則,會將整個數據表刪除,那將是天大的災難。
下面再刪除年齡大於28歲的字段
也能夠多個條件套用進行刪除,這裏的邏輯和上面的例子是同樣的,好比要刪除年齡小於26歲,而且大於27歲的字段
綜合以上就是數據庫的增刪改查,以及數據表的增刪改查,包括修改默認字符集等等,但願對有須要的小夥伴有所幫助。
---《墨雲流香》
QQ:1757468585