前提:商品表-商品分類表-商品品牌表已存在
要求1:
????????????注冊:輸入姓名、密碼、電話、地址
????????????插入顧客表
要求2:
????????????登錄:姓名、密碼
????????????數(shù)據(jù)庫查詢
????????????登錄成功(id保存一下)/登錄失敗
要求3:
? ? ? ? ? ? ? ---商城---
????????????1、所有商品
????????????2、分類管理
????????????3、品牌管理
????????????4、購物
要求4:
????????????輸入id:22
????????????插入訂單表:用戶id,獲取訂單id
????????????插入訂單詳情:訂單id、22、數(shù)量
知識點
1.獲取最新訂單的id:elf.cursor.lastrowid
2.加密:password(%s)
3.用列表傳參來防止SQL注入:
????????sql = "select * from goods where name=%s"
????????self.cursor.execute(sql,[find_name])?
????????print(self.cursor.fetchall())
在命令行輸入
在sublime輸入
插入10萬條數(shù)據(jù)
賬戶管理(一)授予權限
1. 查看所有用戶
-- 所有用戶及權限信息存儲在mysql數(shù)據(jù)庫的user表中
-- 查看user表的結構
desc user;
user這一列:可以登錄的MySQL用戶(表示用戶名)
host這一列:可以通過哪里登錄(表示允許訪問的主機)
1)當出現(xiàn)%,表示可以在任何地方登錄? ?
? 2)localhost,表示只能在本地登錄,有密碼也不好使
authentication_string表示密碼,為加密后的值
-- 查看所有用戶
select?user, host,authentication_string from user;
不是明文密碼,否則數(shù)據(jù)庫被盜密碼就知道了(密碼要用加鹽的方式加密,登錄注冊時也要用password(%s)進行加密)
2. 創(chuàng)建賬戶、授權
需要使用實例級賬戶登錄后操作,以root為例
常用權限主要包括:create、alter、drop、insert、update、delete、select
如果分配所有權限,可以使用all privileges
-- 創(chuàng)建賬戶&授權
grant 權限列表 on 數(shù)據(jù)庫 to '用戶名'@'訪問主機' identified by '密碼';
grant:授權 on:哪一個數(shù)據(jù)庫的哪一個表to:給誰?'用戶名':新的用戶名
'訪問主機':如果是localhost,表示只能在本地登錄,有密碼也不好使;如果是%,表示可以在任何地方登錄
創(chuàng)建前提:
step1:使用root登錄
mysql -uroot -p
step2:創(chuàng)建賬戶并授予所有權限(在cw數(shù)據(jù)庫執(zhí)行)
-- localhost:表示只能在本地登錄,有密碼也不好使
grant select on cw.* to 'laoweng'@'localhost' identified by '2361559775';
--?%:表示可以在任何地方登錄
grant select on cw.* to 'laoweng'@'%' identified by '2361559775';
-- 查看所有的數(shù)據(jù)庫 (\q)
show databases;
-- 查看用戶有哪些權限
show grants for laoweng@localhost;?
step3:退出root的登錄
\q?
step4:使用laoweng賬戶登錄
mysql -ulaoweng -p?
就兩個,除了自己的cw,還有一個是自帶的,因為這個賬戶只有cw數(shù)據(jù)庫的查詢權限
-- 再次創(chuàng)建用戶 (創(chuàng)建一個laoli的賬號,密碼為12345678,可以任意電腦進行鏈接訪問, 并且對cw數(shù)據(jù)庫中的所有表擁有所有權限)
grant all privileges on cw.* to "laoli"@"%" identified by "12345678";
laoli????|? ? %:表示只要跟我一個局域網就可以使用laoli這個賬號登錄我現(xiàn)在的數(shù)據(jù)庫
賬戶管理?(二)賬戶操作
1. 修改權限
grant 權限名稱 on 數(shù)據(jù)庫 to 賬戶@主機with grant option;
-- 刷新權限
flush privileges;
2. 修改密碼
使用root登錄,修改mysql數(shù)據(jù)庫的user表
使用password()函數(shù)進行密碼加密(authentication_string表示密碼)
update user set authentication_string=password('新密碼') where user='用戶名';
eg:修改mysql數(shù)據(jù)庫user表里的laoweng這個賬戶的密碼,將其改成123
update user set authentication_string=password('123') where user='laoweng';
?注意修改完成后需要刷新權限刷新權限:
flush privileges?
3. 遠程登錄(危險慎用)
為什么危險慎用??
只要允許遠程登錄,就可以掃描你的IP和端口,然后在網上下載字典,對你的root賬戶進行暴力登錄,從而導致脫庫?
如果授權了(有%),還登不上,通過Linux系統(tǒng)sudo vim修改/etc/mysql/mysql.conf.d/mysqld.cnf 配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf?
然后重啟msyql(Linux版)
sudo service mysql restart
重啟mysql(windows版)
?home鍵——>搜索服務——>找到MySQL57——>右鍵——>重新啟動
重啟之后,在另外的一臺機器上進行連接測試
不用遠程登錄,可以用SSH
如果依然連不上,可能原因:
1) 網絡不通
通過 ping xxx.xxx.xx.xxx可以發(fā)現(xiàn)網絡是否正常
2)查看數(shù)據(jù)庫是否配置了bind_address參數(shù)
本地登錄數(shù)據(jù)庫查看my.cnf文件和數(shù)據(jù)庫當前參數(shù)show variables like 'bind_address';
如果設置了bind_address=127.0.0.1 那么只能本地登錄
3)查看數(shù)據(jù)庫是否設置了skip_networking參數(shù)
如果設置了該參數(shù),那么只能本地登錄mysql數(shù)據(jù)庫
4)端口指定是否正確
4. 刪除賬戶(推薦使用語法1,如果刪不掉,再用語法2)
語法1:使用root登錄
dropuser'用戶名'@'主機';
eg:
dropuser'laoweng'@'%';
語法2:使用root登錄,刪除mysql數(shù)據(jù)庫的user表中數(shù)據(jù)
delete from user where user='用戶名';
eg:(刪除mysql數(shù)據(jù)庫user表中l(wèi)aoweng用戶的數(shù)據(jù))
delete from user where user='laoweng';
操作結束之后需要刷新權限
flush privileges
5. 忘記 root 賬戶密碼怎么辦 !!
一般也輪不到我們來管理 root 賬戶
萬一呢? 到時候再來查http://blog.csdn.net/lxpbs8851/article/details/10895085