python开发mysql:mysql安装(windows)&密码找回&存储引擎简介&库表的增删改查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python开发mysql:mysql安装(windows)&密码找回&存储引擎简介&库表的增删改查相关的知识,希望对你有一定的参考价值。
一,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)&密码找回&存储引擎简介&库表的增删改查的主要内容,如果未能解决你的问题,请参考以下文章
win7 64 安装mysql-python:_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h
安装mysql-python时“无法打开包含文件:'config-win.h':没有这样的文件或目录”