1. 程式人生 > >python開發mysql:mysql安裝(windows)&密碼找回&存儲引擎簡介&庫表的增刪改查

python開發mysql:mysql安裝(windows)&密碼找回&存儲引擎簡介&庫表的增刪改查

mem 合並 utf 詳細 rop bsp database pri 註意

一,mysql安裝

 1 下載地址 https://dev.mysql.com/downloads/file/?id=471342
 2 解壓後,將目錄C:\mysql-5.7.19-winx64\bin添加到計算機環境變量中
 3 
 4 用CMD命令行執行,mysqld --initialize-insecure 初始化數據庫,這樣C:\mysql-5.7.19-winx64
 5 這個目錄下就會產生data的目錄,裏面包含的就是初始化的東西,配置文件,用戶密碼信息
 6 -insecure 這個參數就是告訴數據庫登陸的時候以本地管理員的身份登陸,不需要密碼
 7 
 8 用CMD命令行執行,mysqld,啟動mysql,然後通過mysql -uroot -p 登陸到數據庫裏,退出是quit
9 用CMD命令行執行,tasklist |findstr mysql 查看mysql運行狀態,PID 10 taskkill /PID 16504 /F 終止msyql運行 11 在計算機搜索欄,services.msc打開系統服務,查看有沒有mysql這個服務,可以通過服務來控制開啟和關閉 12 註意,這裏需要用管理員身份來運行這個CMD 13 用CMD命令行執行,mysqld --install 來添加這個服務,之後你就可以通過系統服務來控制啟動,關閉 14 用CMD命令行執行,mysqld --remove 移除這個服務 15 用什麽方式啟動,就用什麽方式停止
16 17 因為現在沒有密碼,咱們設置個密碼 18 mysqladmin -uroot passwor 123 密碼是123

二,密碼找回

 1 mysqld --skip-grant-tables  跳過授權表啟動mysql,可以通過空密碼登陸
 2 在數據庫裏面更改密碼
 3 update mysql.user set authentication_string=password(456) where user=root and host=localhost;
 4 flush privileges;
 5 解釋:
 6 password 這個是將你的密碼存儲的時候存儲的不是明文,在5.6之前,密碼叫做password,5.7叫做authentication_string
7 where後面接條件,user是用戶,host是哪臺機器 8 9 第二種方式,先停止mysql,跳過配置文件跳過授權表 10 在C:\mysql-5.7.19-winx64目錄下創建一個,my.ini文件,裏面寫 11 [mysqld] 12 skip-grant-tables 13 然後起mysql,會加載這個配置文件 14 用CMD命令行執行mysql,就可以空進去

三,配置文件

 1 [mysqld]
 2 default-storage-engine=INNODB  默認的存儲引擎,默認就是
 3 innodb_file_per_table=1  每一個表都有一個自己的數據文件,很早以前只有一個表結構,數據都放在一起,不安全
 4 ;skip-grant-tables  跳過授權表
 5 port=3306 默認端口
 6 character_set_server=utf8  設置默認字符編碼,創建數據庫的時候都是這個編碼了
 7 #mysql的安裝目錄
 8 basedir=C:\mysql-5.7.19-winx64
 9 #data數據目錄
10 datadir=C:\mysql-5.7.19-winx64,默認是安裝的目錄,也可以自己指定
11 在ini文件裏面,# ;都是註釋的意思
12 如果改變數據目錄,一定要重新初始化,那麽之前的密碼配置都會變成默認
13 註意,上面的操作一定是新安裝的時候才可以,如果有數據了,這樣做你的數據也沒了
14 
15 註意,配置文件my.ini需要用pycharm寫,用windows寫有問題
16 配置文件
17 [mysqld]    #針對mysqld這個命令
18 pass
19 
20 [client]    全局客戶端
21 user=root
22 password=‘‘ 密碼,有的話就寫,沒有話就是空,在登陸的時候,可以直接mysql就可以了
23 
24 [mysql]        局部客戶端,針對mysql客戶端,這個命令
25 user=root
26 password=‘‘
27 配置文件做如上更改的話,用mysql就可以直接登錄
28 如果有mysql,就會用mysql裏面賬號登錄,沒有的話用client
29 這個配置不需要重啟,只是針對命令,但是如果是mysqld有變動,就需要重啟了

四,存儲

1 innodb引擎支持事務回滾,存儲數據更安全,庫下面存放表結構,數據
2 myisam引擎速度快,不支持失誤回滾,不安全,庫下面存放表結構,數據,索引   **用這個引擎的表,插入數據跟innodb一樣,性能上有差異
3 memory引擎速度快,數據存儲在內存,庫下面只有表結構              **用這個引擎的表,插入數據跟innodb一樣,重啟mysql之後就沒了
4 blackhole引擎,黑洞,垃圾數據可以往裏面加,庫下面只有表結構     **用這個引擎的表,插入數據就會沒有,被當垃圾回收

五,創建賬號

 1 select user(); 查看當前用戶在哪裏登錄
 2 help create;查詢幫助 help create user;查看創建用戶的幫助
 3 
 4 服務端創建賬號
 5 創建本地賬號
 6 cteate user egon@localhost identified by 123;
 7 創建遠程賬號
 8 cteate user egon@% identified by 123;
 9 創建網段賬號
10 cteate user egon@192.168.20. identified by 123;
11 
12 
13 客戶端登錄賬號
14 mysql -uegon -p123
15 mysql -h192.168.20.97 -uegon -p123  -h服務端地址
16 
17 如果輸入錯誤在最後面加入 \c就是取消了,不需要加;
18 create databse db;
19 這樣的輸入錯誤,\c是結束不了,需要先\c這樣,因為引號是成對

六,簡單增刪改查

 1 數據庫操作,都是在mysql裏面操作
 2 create database db1; 創建數據庫,這樣data目錄下就會有個db1的目錄
 3 create database db1 charset utf8; 在創建數據庫的時候指定字符編碼
 4 show  create database db1; 查看單個數據庫信息
 5 show  databases; 查看所有數據庫
 6 drop database db1; 刪除數據庫
 7 alter database db1 charset utf8; 修改數據庫字符編碼
 8 user db2; 切換數據庫
 9 select database(); 返回當前在哪個數據庫下
10 
11 表操作,切換到數據庫下
12 create table t1(id int,name char)engine=innodb;  創建表
13 t1是表名,括號裏面是字段,int,整形 char,字符串,engine=innodb指定存儲引擎,默認就是innodb,可不加
14 t1.frm 表結構,t1.ibd 數據  ib就是InnoDB引擎
15 show create table t1; 查看表
16 show tables; 查看當前數據庫下的表
17 drop table t1; 刪除表
18 
19 插入數據,如果表的字段有三個,那我插的時候也是三個,就是按位置傳參數,少一個不行
20 insert into t1 values(1,egon,18);
21 insert into t1(id) values(1,egon);  這樣報錯,傳入的參數多
22 insert into t1(id) values(1);  這樣就是傳一個,其他字段就是空
23 查表數據
24 select id,name,age from t1;  可以用*代表id,name,age就是所有

詳細的增刪改查,對於表操作

 1 首先要創建表
 2 create table t1(id int,name char(10))engine=innodb default charset utf8;
 3 插入數據,可以多插入
 4 insert into db1.t1 values(1,egon1),(2,egon2),(3,egon3);
 5 insert into db1.t1(name) values(egon1),(egon2),(egon3);這樣的話,id就是空
 6 查看信息
 7 select * from db1.t1;
 8 select name,id from db1.t1;
 9 修改信息
10 update db1.t1 set name=sb where id=4; 條件這塊寫name=egon3;
11 也可以,等號字符後面有空格可以忽視,前面的話就不成功
12 刪除信息
13 delete from t1 where id=4; 刪除id=4這行
14 delete from t1;  清空表
15 truncate t1;  清空表,大數據比上面快,delete刪除會一條一條刪除,要判斷
16 
17 3.2 插入遞增數據
18 create table t1(id int not null,name char(10));  id這塊不能為空,如果在插入數據沒有id的時候就會報錯
19 create table t1(id int primary key auto_increment,name char(10));
20 create table t1(id int not null unique auto_increment,name char(10));
21 primary key  主鍵,不為空,而且是唯一的
22 not null unique  主鍵,不為空,而且是唯一的
23 auto_increment  遞增
24 insert into t1(name) values(egon1),(egon2),(egon3); 插入數據,id遞增
25 select * from t1 where id>2; 利用主鍵查詢速度快
26 如果用delete from t1; 清除表,id還是遞增的,用truncate t1; 清空表,就是從1開始
27 
28 約束可通過desc t1查看 pri就是主鍵
29 
30 3.3 拷貝表
31 create table t2 select * from t1;  拷貝出來的是表結構和數據,但是主鍵,約束沒有拷貝過來
32 create table t2 select * from t2 where 1=2;  拷貝表結構,因為後面條件不成立
33 
34 3.4 修改主鍵
35 desc t2,沒有主鍵,我們創建這個主鍵,其實是修改
36 alter table t2 modify id int primary key auto_increment;  修改字段增加主鍵
37 
38 3.5 刪除記錄
39 delete 刪除的是一條記錄
40 delete from t1 where id=1;  刪除一條記錄
41 update t1 set name=‘‘ where id=1; 
42 如果刪除字段值,其實就是修改,不加where 就是修改這個表所有的該段記錄

七 授權權限,insert,delete,update,select

 1 先創建賬號
 2 create user lin@localhost identified by 123;
 3 級別1,對所有庫下所有表下的所有字段
 4 grant select on *(所有庫).*(所有表) to lin@localhost;
 5 可以合並授權加創建賬號
 6 grant select on *(所有庫).*(所有表) to lin@localhost identified by 123;
 7 
 8 級別2,對db1下所有表的所有字段
 9 grant select on db1.*(所有表) to lin@localhost identified by 123;
10 
11 級別3,對db1.t1表下的所有字段
12 grant select on db1.t1 to lin@localhost identified by 123;
13 
14 級別四,對db1.t1表下的id,name字段
15 grant select (id,name) on db1.t1 to lin@localhost identified by 123;
16 select id,name from t1; 
17 grant select (id,name),update(name) on db1.t1 to lin@localhost identified by 123;
18 可以修改這個name這個字段
19 update t1 set name=Egon where id=1;
20 
21 flush privileges; 授權完需要刷新這個權限
22 
23 移除權限
24 revoke select on db1.* from egon@localhost;  移除權限
25 help revoke
26 
27 msyql庫下,這些表掌控的就是權限表
28 user 所有庫級別權限就是root權限
29 db     單個庫權限
30 tables_priv  單個表權限
31 columns_priv  字段權限

八 字符編碼

 1 默認是latin文,是沒有辦法插入中文,你就需要更改這個表的字符集
 2 show create table t1;
 3 alter table t1 charset utf8;
 4 但是還是插入不進去,因為有些字段可能還是latin文,所以要針對這個字段做些更改
 5 alter table t1 modify name char(10);  我這裏重新定義一下這個字段,那麽他就會按照表的字符編碼設置了
 6 配置文件這塊修改默認字符集,需要用Pycharm修改,本地修改不生效
 7 [client]
 8 default-character-set=utf8
 9 [mysql]
10 default-character-set=utf8
11 [mysqld]
12 character_set_server=utf8   5.7版本修改參數
13 ;default-character-set=utf8  老版本
14 重啟生效
15 
16 \s 查看數據庫一些配置信息,能看到服務端,數據庫,客戶端,客戶端連接所有字符編碼是不是utf8

python開發mysql:mysql安裝(windows)&密碼找回&存儲引擎簡介&庫表的增刪改查