python開發mysql:mysql安裝(windows)&密碼找回&存儲引擎簡介&庫表的增刪改查
阿新 • • 發佈:2017-09-09
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 登陸到數據庫裏,退出是quit9 用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_string7 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)&密碼找回&存儲引擎簡介&庫表的增刪改查