對於數據庫的操做以及配置

1、數據庫基礎

1.什麼是數據庫**

1.什麼是數據庫:用來存儲數據的倉庫,管理數據文件的系統 - 安裝某種管理數據的系統 - 管理的對象本質是文件
2.存儲數據的位置:在硬盤及內存中存儲數據
3.什麼是系統:運行在硬件基礎上,管理其餘軟件

4.數據庫的組成
庫:存放多張表 - 文件夾
表:包含多條相同結構的記錄(表結構文件,表數據文件(索引文件)) - 文件
記錄:(數據的本體)包含多個key-value鍵值對的一條數據 - 二進制數據
字段:(數據的描述)描述信息 - 信息自己 == key-value - 二進制數據
例如:
stu
id  name    age     gender
1   Bob     18      男
2   Tom     17      女
...

teacher
...

5. 數據庫與文件存儲數據區別
  數據庫本質也是經過文件來存儲數據, 數據庫的概念就是系統的管理存儲數據的文件

2.數據庫介紹

數據庫服務器端: 存放數據庫的主機集羣
數據庫客戶端: 能夠鏈接數據庫的任意客戶端
數據庫管理員: DBA

# socket套接字的C/S架構應用

3.數據庫基本概念(組成)

# 重要性: ***
庫: 多表構建一個數據庫, 本質就是文件夾
表: 多條相同結構的記錄(數據), 本質就是文件
記錄: 包含多個key-value鍵值對的一條數據, 本質就是文件中一條條數據記錄,而且爲二進制數據
字段:描述信息 - 信息自己 == key-value - 二進制數據
    (字段)id, name, age, gender...一個老師的數據 => 一條數據記錄
例如:
stu
id  name    age     gender
1   Bob     18      男
2   Tom     17      女
...

teacher
...

4.數據庫分類**

分類:效率問題(內存>硬盤,非關係>關係,key-value>sql)




# 重要性: ***
 1)關係型數據庫:數據庫中表與表之間又聯繫 - mysql
1.有表的概念
2.以表中一條條記錄存儲數據
 mysql oracle sqlServer access db2


2)非關係型數據庫:沒有表的概念-redis,mongodb(介於關係與非關係之間)
1.沒有表的概念
2.經過key-value鍵值對方式存儲數據
mongodb redis memcache


3)內存與硬盤(內存>硬盤)
    硬盤:數據能夠永久存儲 - mysql、mongodb
    內存:數據的存取效率極高 - redis、memcache
 
4)sql與nosql
    sql:數據庫操做經過sql語句
    nosql:數據庫操做就是key-value形式(value就是一條記錄)
            stu - {'name': 'Bob', 'age': 18}
            stus - [{'name': 'Bob', 'age': 18}, {'name': 'Tom', 'age': 18}]
            name - 'Jerry'

5.數據庫安裝

一、解壓免安裝版本(5.6 - 沒有初始密碼)
二、配置環境變量:數據庫絕對路徑下的bin
三、配置服務:
    啓動管理員終端:mysqld --install [nmysql]

# 安裝server端與client端


# 如何啓動server? 若是經過client鏈接server
管理員的身份運行cmd或者powershell

6.數據庫卸載

前提)啓動終端,輸入 mysql,若是不是提示 不是內部或外部命令,表明已安裝數據庫

1)直接連入
    i 搜索:服務,檢索mysql服務,有
        中止服務,並移除服務 - 啓動管理員終端:mysqld --remove
            
    ii 搜索:服務,檢索mysql服務,無 (mysql使用命令啓動)
        中止服務,啓動管理員終端
            tasklist | findstr mysql
            taskkill /pid 進程pid /f
    
2)鏈接超時
    搜索:服務,檢索mysql服務,移除服務便可
    
3)移除環境變量

總結:若是能連入,先中止服務 | 若是添加了服務,就移除服務 | 取消環境變量配置

7.數據庫啓動與鏈接**

數據庫的鏈接:主機、端口、帳號、密碼、數據庫mysql

# 前提:配置環境變量

# 瞭解
1.前往數據庫安裝路徑,bin文件夾下,cmd執行 mysqld 啓動mysql服務器端

2.前往數據庫安裝路徑,bin文件夾下,cmd執行 mysql 啓動mysql客戶端鏈接服務器端
# 掌握***
# 將mysql服務器添加到系統服務,在系統服務中啓動mysql, 命令:  mysqld --install
# 進入系統服務: win+r => services.msc => 找到mysql服務手動啓動或關閉

# 鏈接數據庫:mysql -hlocalhost -P3306 -uroot -p
1)遊客登錄(不必定能登入,登入了也啥都不能幹)
>: mysql

2)帳號密碼登陸
>: mysql -u root -p
再輸入密碼,沒有任何提示,沒有密碼直接回車

3)鏈接指定服務器的mysql
>: mysql -h ip地址 -P 端口號 -u 帳號 -p
回車後敲入密碼
eg:
>: mysql -hlocalhost -P3306 -uroot -p

4)退出數據庫
>: quit
>: exit
# 經過最高權限進入數據庫, 要採用root用戶進入, 連入本地數據庫: mysql -uroot -p

2、數據庫操做

8.用戶信息查看

1)查看當前登陸的用戶
mysql>: select user();

2)root權限下能夠查看全部用戶信息
mysql>: select * from mysql.user;
mysql>: select * from mysql.user \G
mysql>: select user,password,host from mysql.user;

3)root登陸下,刪除遊客(操做後要重啓mysql服務)
mysql>: delete from mysql.user where user='';

4)root登陸下,修改密碼(操做後要重啓mysql服務)
mysql>: update mysql.user set password=password('12345678') where host='localhost';

5)沒有登陸
>: mysqladmin -u用戶名 -p舊密碼 -h域名 password "新密碼"
eg>: mysqladmin -uroot -p12345678 -hlocalhost password "root"

6)root登陸下,建立用戶
mysql>:grant 權限們 on 數據庫名.表名 to 用戶名@主機名 identified by '密碼';

9.用戶操做與管理(重點)(新建立用戶)***

建立對指定數據庫權限的用戶:grant 權限們 on 數據庫.表 to 用戶名@'主機名' identified by '密碼';redis

# 操做前提:登陸root用戶

1.重要字段
Host | User | Password

2.新建用戶
create user 用戶名@主機名 identified by '密碼'; # 正確
create user zero@localhost identified by 'zero';


3. 爲特定的數據庫分配有該數據庫 操做權限 的用戶
mysql>: grant 權限們 on 數據庫.表 to 用戶名@'主機名' identified by '密碼';
  方法1
# 1)all:全部權限
# 2)oldboy.*:oldboy數據庫下全部表
# 3)oldboy@'localhost':本機能夠經過oldboy用戶登入
# 4)identified by 'Oldboy123':密碼爲Oldboy123
eg>: grant all on oldboy.* to oldboy@'localhost' identified by 'Oldboy123';
    方法2
# 1)select,delete,update,insert,drop,alter:指定的權限
# 2)oldboy.*:oldboy數據庫下全部表
# 3)oldboy@'%':任何機器能夠經過oldboy用戶登入
# 4)identified by 'Oldboy123':密碼爲Oldboy123
eg>: grant select,delete,update,insert,drop,alter on oldboy.* to oldboy@'%' identified by 'Oldboy123';
    
    注:數據庫名,表名能夠用*替換,表明全部
    注:設置權限時若是沒有當前用戶,會自動建立用戶,提倡使用

    
4. 撤銷權限
mysql>: revoke 權限1,權限2,... on 數據庫名.表名 from 用戶名@'主機名';
# 禁掉本地oldboy用戶對oldboy數據庫的全部表的drop權限
eg:> revoke drop on oldboy.* from oldboy@'localhost';
    
5.修改密碼
set password for 用戶名@主機名 = password('新密碼');
set password for owen@localhost = password('123');

6. 刪除用戶
drop user 用戶名@'主機名';


10.數據庫的密碼操做

修改密碼: mysqladmin -uroot -p舊密碼 password "新密碼"

11.數據庫的配置(統一字符編碼)

# 查看數據庫配置信息: \s => 統一編碼 => 防止亂碼(讀取不方便,數據丟失)

# 在mysql安裝根目錄下:建立my.ini (my.cnf) (命令:type nul>文件名.文件後綴)
# 經過配置文件統一配置的目的:統一管理 服務端(mysqld) 、客戶端(client)
#       配置了 mysqld(服務端) 的編碼爲utf8,那麼再建立的數據庫,默認編碼都採用utf8

# 配置流程
# 1)在mysql安裝根目錄下,建立配置文件:my.ini
#       mac下配置文件名叫 my.cnf

# 2)設置配置文件內容並保存
[mysqld]  # 服務器配置
port=3306  # 能夠修改數據庫默認端口(若是數據庫端口被其餘軟件佔用)
character-set-server=utf8  # 編碼格式
collation-server=utf8_general_ci  # 排序方式(默認跟編碼格式走)

[client]  # mysql本身的客戶端叫[mysql],配置[client]即配置了[mysql],也配置了其餘存在方式的客戶端,好比Navicat可視化客戶端
default-character-set=utf8  # 編碼格式

# 3)重啓數據庫服務
###直接複製粘貼
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci




[mysql]
default-character-set=utf8



[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci




[mysql]
default-character-set=utf8
##########加入免登陸
user=root
password=root



[client]
default-character-set=utf8

11.數據庫修改(字符編碼)信息

#修改字符編碼
mysql>:alter database 數據庫名 charset=編碼格式;

12.庫的基本操做

# 前提: 鏈接上數據庫
1.查看mysql版本: 
mysql>select version();
2.查看當前用戶: 
mysql>select user();
3.查看mysqld下的(當前用戶能夠操做的)全部數據庫: 
mysql>show databases; 
4.選擇數據庫
mysql>:use 數據庫名;
mysql>use db1;
5.查看當前所在數據庫:
mysql>:select database();
6.增,建立數據庫
mysql>:create database 數據庫名 [charset="編碼格式"];
# 採用默認編碼集: 
    mysql>create database db1;  # db1爲數據庫名
# 自定義編碼集: 
    mysql>create database db1 charset="gbk";

7.查,查看數據庫所有信息
mysql>:show create database 數據庫名;
    # 詳細信息: 
mysql>show create database db1;


8.改,修改數據庫編碼集
mysql>alter database db1 charset="utf8";

9.刪, 移除數據庫
mysql>:drop database 數據庫名;
mysql>drop database db1;
10. 退出
mysql>exit
mysql>quit

13.數據庫模式(安全模式和非安全模式)

# sql_mode: 反映數據庫的全局變量
# 數據庫模式限制的是客戶端對服務器操做數據的方式(是否嚴格)


# mysql 5.7 之後默認都是安全模式

# mysql 5.6 版本

sql_model=no_engine_substitution  # 非安全性,默認
sql_model=strict_trans_tables  # 安全性

# 查看當前數據庫模式:
show variables like "%sql_mode%"; # %匹配0~n個任意字符 => 模糊查詢

# 臨時設置爲安全模式,服務重啓後會被重置
mysql>: set global sql_mode="strict_trans_tables";  # 在root用戶登陸狀態下
# 在設置後,quit斷開數據庫鏈接後(服務器不重啓)就會進入安全模式

# 安全模式下,非安全模式下sql執行的警告語句,都會拋異常
eg>: create table t1(name char(2));
eg>: insert into t1 values ("ab") # 正常
eg>: insert into t1 values ("owen") # 錯誤 Data too long for column 'name' at row 1

14.庫的遠程鏈接

15.查看庫的文件以及結束進程

設置時區

繼續輸入 show variables like'%time_zone'; (注意不要漏掉後面的分號),回車,如圖:sql

顯示 SYSTEM 就是沒有設置時區啦。mongodb

3,如今咱們來設置時區。shell

輸入set global time_zone = '+8:00'; 注意不要漏掉後面的分號),回車,如圖:數據庫

這即是設置成功啦!安全

這時你從新鏈接下數據庫,也許能鏈接成功!若是沒有,就繼續往下走!服務器

相關文章
相關標籤/搜索