Linux 數據庫操作(一)


我們可以將用於數據服務的數據庫分為關系型數據庫和非關系型數據庫,關系型數據庫最典型的就是Mysql,以及和他同源的MariaDB數據庫,oracle等,非關系型數據庫則有redis數據庫,mongodb(文檔型的數據庫),ES等,未來很火的NewSQL數據庫,TiDB、Tdengine等等。

下面我們以MariaDB數據庫為例來說在Linux中的各種操作。

1.安裝MariaDB數據庫

[root@local ~]# yum install mariadb-server mariadb -y

2.開啟數據庫服務和設置開機自動啟動

[root@local ~]# systemctl start mariadb
[root@local ~]# systemctl enable mariadb

如果在安裝或操作的過程中,進程出現了錯誤,我們可以在日志里面去查看

[root@local ~]# cat /var/log/mariadb/mariadb.log

3.安裝完成之后,我們用命令檢查下數據庫3306端口(默認)是否開放

[root@local ~]# netstat -lntup|grep mysql

或者用管道命令查看3306端口是否開放

[root@local ~]# netstat -lntup|grep 3306

4.在較高版本的MariaDB中,默認登錄時會產生一串隨機數密碼,但是在較低的版本(5.7.0)中,默認值是空,我們使用的是(5.5.68-MariaDB)版本,所以給Mariadb配置登陸密碼,並使用新密碼進行登錄數據庫。

[root@local ~]# mysqladmin password 'test123'

這里我們將密碼設置為test123.,設置好之后沃恩可以用命令登錄到數據庫

[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

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM