MySQL(创建顾客表、订单表、订单详情表;账户管理【(授予权限 | 您所在的位置:网站首页 › mysql登录权限设置 › MySQL(创建顾客表、订单表、订单详情表;账户管理【(授予权限 |
前提:商品表-商品分类表-商品品牌表已存在 要求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()) 在命令行输入 在sublime输入 插入10万条数据 账户管理(一)授予权限 1. 查看所有用户 -- 所有用户及权限信息存储在mysql数据库的user表中 -- 查看user表的结构 desc user; user这一列:可以登录的MySQL用户(表示用户名) host这一列:可以通过哪里登录(表示允许访问的主机) 1)当出现%,表示可以在任何地方登录 2)localhost,表示只能在本地登录,有密码也不好使 authentication_string表示密码,为加密后的值 -- 查看所有用户 select user, host,authentication_string from user; 不是明文密码,否则数据库被盗密码就知道了(密码要用加盐的方式加密,登录注册时也要用password(%s)进行加密) 2. 创建账户、授权 需要使用实例级账户登录后操作,以root为例 常用权限主要包括:create、alter、drop、insert、update、delete、select 如果分配所有权限,可以使用all privileges -- 创建账户&授权 grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码'; grant:授权 on:哪一个数据库的哪一个表to:给谁 '用户名':新的用户名 '访问主机':如果是localhost,表示只能在本地登录,有密码也不好使;如果是%,表示可以在任何地方登录 创建前提: 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 就两个,除了自己的cw,还有一个是自带的,因为这个账户只有cw数据库的查询权限 -- 再次创建用户 (创建一个laoli的账号,密码为12345678,可以任意电脑进行链接访问, 并且对cw数据库中的所有表拥有所有权限) grant all privileges on cw.* to "laoli"@"%" identified by "12345678"; 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这个账户的密码,将其改成123 update 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 账户 万一呢? 到时候再来查http://blog.csdn.net/lxpbs8851/article/details/10895085 |
CopyRight 2018-2019 实验室设备网 版权所有 |