目錄python
1.什麼是數據庫:用來存儲數據的倉庫,管理數據文件的系統 - 安裝某種管理數據的系統 - 管理的對象本質是文件 2.存儲數據的位置:在硬盤及內存中存儲數據 3.什麼是系統:運行在硬件基礎上,管理其餘軟件 4.數據庫的組成 庫:存放多張表 - 文件夾 表:包含多條相同結構的記錄(表結構文件,表數據文件(索引文件)) - 文件 記錄:(數據的本體)包含多個key-value鍵值對的一條數據 - 二進制數據 字段:(數據的描述)描述信息 - 信息自己 == key-value - 二進制數據 例如: stu id name age gender 1 Bob 18 男 2 Tom 17 女 ... teacher ... 5. 數據庫與文件存儲數據區別 數據庫本質也是經過文件來存儲數據, 數據庫的概念就是系統的管理存儲數據的文件
數據庫服務器端: 存放數據庫的主機集羣 數據庫客戶端: 能夠鏈接數據庫的任意客戶端 數據庫管理員: DBA # socket套接字的C/S架構應用
# 重要性: *** 庫: 多表構建一個數據庫, 本質就是文件夾 表: 多條相同結構的記錄(數據), 本質就是文件 記錄: 包含多個key-value鍵值對的一條數據, 本質就是文件中一條條數據記錄,而且爲二進制數據 字段:描述信息 - 信息自己 == key-value - 二進制數據 (字段)id, name, age, gender...一個老師的數據 => 一條數據記錄 例如: stu id name age gender 1 Bob 18 男 2 Tom 17 女 ... teacher ...
分類:效率問題(內存>硬盤,非關係>關係,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.6 - 沒有初始密碼) 二、配置環境變量:數據庫絕對路徑下的bin 三、配置服務: 啓動管理員終端:mysqld --install [nmysql] # 安裝server端與client端 # 如何啓動server? 若是經過client鏈接server 管理員的身份運行cmd或者powershell
前提)啓動終端,輸入 mysql,若是不是提示 不是內部或外部命令,表明已安裝數據庫 1)直接連入 i 搜索:服務,檢索mysql服務,有 中止服務,並移除服務 - 啓動管理員終端:mysqld --remove ii 搜索:服務,檢索mysql服務,無 (mysql使用命令啓動) 中止服務,啓動管理員終端 tasklist | findstr mysql taskkill /pid 進程pid /f 2)鏈接超時 搜索:服務,檢索mysql服務,移除服務便可 3)移除環境變量 總結:若是能連入,先中止服務 | 若是添加了服務,就移除服務 | 取消環境變量配置
數據庫的鏈接:主機、端口、帳號、密碼、數據庫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
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 '密碼';
建立對指定數據庫權限的用戶: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 用戶名@'主機名';
修改密碼: mysqladmin -uroot -p舊密碼 password "新密碼"
# 查看數據庫配置信息: \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
#修改字符編碼 mysql>:alter database 數據庫名 charset=編碼格式;
# 前提: 鏈接上數據庫 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
# 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
繼續輸入 show variables like'%time_zone'; (注意不要漏掉後面的分號),回車,如圖:sql
顯示 SYSTEM 就是沒有設置時區啦。mongodb
3,如今咱們來設置時區。shell
輸入set global time_zone = '+8:00'; 注意不要漏掉後面的分號),回車,如圖:數據庫
這即是設置成功啦!安全
這時你從新鏈接下數據庫,也許能鏈接成功!若是沒有,就繼續往下走!服務器