mysql 单表权限控制_①⑤MySQL(创建顾客表、订单表、订单详情表;账户管理【(授予权限-查看所有用户-创建账户-授权-创建前提)、(账户操作-修改/刷新权限-修改密码-远程登录-删除账户-忘记...

本文详细介绍了MySQL中如何进行单表权限控制,包括创建和管理用户账户、授予权限、修改密码、远程登录以及删除账户。重点讨论了如何防止SQL注入,以及账户的创建、权限修改和密码加密等操作。
摘要由CSDN通过智能技术生成

43120aff9cc7

前提:商品表-商品分类表-商品品牌表已存在

要求1:

注册:输入姓名、密码、电话、地址

插入顾客表

要求2:

登录:姓名、密码

数据库查询

登录成功(id保存一下)/登录失败

要求3:

---商城---

1、所有商品

2、分类管理

3、品牌管理

4、购物

要求4:

输入id:22

插入订单表:用户id,获取订单id

插入订单详情:订单id、22、数量

知识点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())

在命令行输入

43120aff9cc7

在sublime输入

43120aff9cc7

插入10万条数据

43120aff9cc7

账户管理(一)授予权限

43120aff9cc7

1. 查看所有用户

-- 所有用户及权限信息存储在mysql数据库的user表中

-- 查看user表的结构desc user;

user这一列:可以登录的MySQL用户(表示用户名)

host这一列:可以通过哪里登录(表示允许访问的主机)

1)当出现%,表示可以在任何地方登录

2)localhost,表示只能在本地登录,有密码也不好使

43120aff9cc7

authentication_string表示密码,为加密后的值

-- 查看所有用户select user, host,authentication_string from user;

不是明文密码,否则数据库被盗密码就知道了(密码要用加盐的方式加密,登录注册时也要用password(%s)进行加密)

43120aff9cc7

2. 创建账户、授权

需要使用实例级账户登录后操作,以root为例

常用权限主要包括:create、alter、drop、insert、update、delete、select

如果分配所有权限,可以使用all privileges

-- 创建账户&授权grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';

grant:授权   on:哪一个数据库的哪一个表    to:给谁    '用户名':新的用户名

'访问主机':如果是localhost,表示只能在本地登录,有密码也不好使;如果是%,表示可以在任何地方登录

43120aff9cc7

创建前提:

step1:使用root登录mysql -uroot -p

step2:创建账户并授予所有权限(在cw数据库执行)-- localhost:表示只能在本地登录,有密码也不好使

grant select on cw.* to 'laoweng'@'localhost' identified by '2361559775';

-- %:表示可以在任何地方登录

grant select on cw.* to 'laoweng'@'%' identified by '2361559775';

-- 查看所有的数据库 (\q)show databases;

-- 查看用户有哪些权限show grants for laoweng@localhost;

step3:退出root的登录\q

step4:使用laoweng账户登录mysql -ulaoweng -p

43120aff9cc7

就两个,除了自己的cw,还有一个是自带的,因为这个账户只有cw数据库的查询权限

43120aff9cc7

-- 再次创建用户 (创建一个laoli的账号,密码为12345678,可以任意电脑进行链接访问, 并且对cw数据库中的所有表拥有所有权限)grant all privileges on cw.* to "laoli"@"%" identified by "12345678";

43120aff9cc7

laoli    |    %:表示只要跟我一个局域网就可以使用laoli这个账号登录我现在的数据库

账户管理 (二)账户操作

1. 修改权限grant 权限名称 on 数据库 to 账户@主机with grant option;

-- 刷新权限flush privileges;

2. 修改密码

使用root登录,修改mysql数据库的user表

使用password()函数进行密码加密(authentication_string表示密码)update user set authentication_string=password('新密码') where user='用户名';

eg:修改mysql数据库user表里的laoweng这个账户的密码,将其改成123update user set authentication_string=password('123') where user='laoweng';

注意修改完成后需要刷新权限刷新权限:flush privileges

3. 远程登录(危险慎用)

为什么危险慎用?

只要允许远程登录,就可以扫描你的IP和端口,然后在网上下载字典,对你的root账户进行暴力登录,从而导致脱库

如果授权了(有%),还登不上,通过Linux系统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可以发现网络是否正常

2)查看数据库是否配置了bind_address参数

本地登录数据库查看my.cnf文件和数据库当前参数show variables like 'bind_address';

如果设置了bind_address=127.0.0.1 那么只能本地登录

3)查看数据库是否设置了skip_networking参数

如果设置了该参数,那么只能本地登录mysql数据库

4)端口指定是否正确

4. 删除账户(推荐使用语法1,如果删不掉,再用语法2)

语法1:使用root登录dropuser'用户名'@'主机';

eg:dropuser'laoweng'@'%';

语法2:使用root登录,删除mysql数据库的user表中数据delete from user where user='用户名';

eg:(删除mysql数据库user表中laoweng用户的数据)delete from user where user='laoweng';

操作结束之后需要刷新权限flush privileges

5. 忘记 root 账户密码怎么办 !!

一般也轮不到我们来管理 root 账户,所以别瞎操卖白粉的心了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值