MySQL 8.0.35

1、MySQL(MySQL-8.0.35-winx64)

1.1、下载安装、配置、初始化、安装服务

  • 进入MySQL官网下载安装MySQL:
    在这里插入图片描述

  • 步骤一:解压完成后需进行文件的配置,在安装目录下新建一个my.ini的文件,并将下面配置写入其中(版本不同可能配置文件也有所不同,自行上网查询配置)并保存(需要注意写入的MySQL安装路径)。

    注意:当通过启动指令来启动服务时,报 mysql服务无法启动,服务没有报告任何错误 时,可能就是当前配置与版本不匹配。

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录   ----------是你的文件路径-------------
basedir=D:\Application\MySQL\mysql-8.0.35-winx64
# 设置mysql数据库的数据的存放目录  ---------是你的文件路径data文件夹,后边会用命令行自行创建
datadir=D:\Application\MySQL\mysql-8.0.35-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

如图:

在这里插入图片描述

  • 步骤二:配置环境变量。

在电脑桌面右击【我的电脑】,依次点击属性、高级系统设置、环境变量,进入环境变量设置页面。在环境变量设置页面 ,双击系统变量中的Path变量,按下图顺序添加环境变量。其中,③处的值需要按照实际情况写至Mysql的bin目录为止。

在这里插入图片描述

  • 步骤三:以管理员身份运行命令提示符窗口并进入软件安装路径的bin目录下后,输入 mysqld --initialize –console 指令进行初始化数据库,并生成随机登录密码。且初始化后将会自动创建data文件,并会在data文件夹里生成文件。

    在这里插入图片描述

在这里插入图片描述

  • 步骤四:输入 mysqld install 指令进行数据库服务的安装。(提示Service successfully installed.表示服务安装成功)

在这里插入图片描述

1.2、服务的启动与停止

1.2.1、使用windows命令提示符操作

在bin目录下输入 net start mysql 指令来启动mysql服务。

在这里插入图片描述

在bin目录下使用 net stop mysql 指令来停止mysql服务。

在这里插入图片描述

1.2.2、使用图形界面进行操作:(在任务管理器中操作)

在这里插入图片描述

1.3、登录与退出

1.3.1、使用MySQL自带工具(mysql.exe)进行登录

打开命令提示符输入  mysql -h 主机名 -u 用户名 -p  指令进行登录
参数说明:

-h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
-u : 登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项

1、本机登录 MySQL 数据库:
mysql -u root -p		# 方式一
mysql -h 127.0.0.1 -P 3306 -u root -p		# 方式二

(1)、进入软件安装路径的bin目录下,并输入 mysql -u root -p 命令,按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:

Enter password:

(2)、若密码存在, 输入密码即可登录(初始化服务时生成的随机密码)。若密码不存在则直接按回车登录。

(3)、登录成功后你将会看到 Welcome to the MySQL monitor… (如图)的提示语。且命令提示符会一直以 mysql > 加一个闪烁的光标等待命令的输入。

在这里插入图片描述

(4)、可输入 exit 或 quit 退出登录。

在这里插入图片描述

2、远程登录MySQL数据库:

(1)、开启远程登录权限:

在命令行窗口,启动服务并连接登录到MySQL数据库,依次输入以下命令来开启MySQL的远程访问权限。

use mysql;
select User,authentication_string,Host from user;
update user set host='%' where user='root';
flush privileges;
select User,authentication_string,Host from user;

在这里插入图片描述

(2)、远程连接登录:

在命令行窗口,输入如下指令(替换成本机IP和配置里的端口号),尝试连接登录到MySQL。

mysql -uroot -h 192.168.1.112 -p -P3308

在这里插入图片描述

1.3.2、(使用Python模块进行登录)

需安装第三方模块pymysql,在虚拟环境中安装要注意加入虚拟环境的地址,如下图。

pip install pymysql

在这里插入图片描述

import pymysql

# 连接MySQL
conn = pymysql.connect(host='127.0.0.1', port=3306,user='root', password='123456', charset='utf8')

# 创建一个邮标
cursor = conn.cursor()


"""
进行具体操作
.....
......
......
"""


# 断开连接
cursor.close()
conn.close()

1.4、修改密码

需启动服务,并连接登录到Mysql数据库,输入 ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘新的密码’; 指令并按回车确定(把新的密码 修改成你想要的密码),密码即已修改完成。按exit退出,并重新连接,输入修改后的密码登录即可。

在这里插入图片描述

1.5、报错与重置密码

报错一:提示此应用无法在电脑上运行,并拒绝访问。

在这里插入图片描述

在这里插入图片描述

原因:

出现在切换目录上,没有进入到bin目录下就运行了命令。

解决方法:

进入bin目录在运行命令(如下图)。

在这里插入图片描述

报错二:密码输入错误,忘记密码。(需重置密码)

提示:错误 104528000):用户“root”@“localhost”的访问被拒绝(使用密码:YES)如图:

在这里插入图片描述

原因:

root用户没有使用权限(密码错误了)。

解决方法:(重置密码)

  • 步骤一:使用管理员打开第一个cmd命令提示符窗口,进入bin目录,用 net start mysql 指令来连接数据库,在使用 mysqld –console –skip-grant-tables –shared-memory 指令运行。

在这里插入图片描述

  • 步骤二:接着以管理员身份打开第二个cmd命令提示符窗口,进入bin目录,输入 mysql -uroot -p 指令进入登陆界面,不输入密码直接回车登录即可,之后依次输入 use mysql 指令并回车, updata user set authentication_sting=’’ where user=’root’ 指令并回车(成功重置密码),最后输入quit退出。(报错可net start mysql连接一下数据库试试)

在这里插入图片描述

  • 步骤三(修改密码):重新使用管理员身份打开cmd命令提示符窗口,进入bin目录,连接服务,输入 mysql -uroot -p 指令进入登陆界面,不输入密码直接回车登录,输入 ALTER USER ‘root’@‘localhost’ IDENTIFIED BY’新密码’; 指令并回车,设置密码成功。(新密码为你要设置的密码,注意加上英文分号),输入quit退出,重新进行登录输入你设置的密码即可。(如图)

在这里插入图片描述

1.6、完整删除MySQL

  • 步骤一:在命令提示符窗口,使用停止的指令进行停止服务。
  • 步骤二:按下"win+R"快捷键,打开运行对话框,输入 regedit 指令,点击确定按钮,打开注册表编辑器,并在注册表编辑器页面, 按如下路径找到待删除文件,将其删除,效果如图所示。
计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\MySQLD Service

在这里插入图片描述

  • 步骤三:在命令行窗口,输入 mysqld -remove 指令,删除Mysql,效果如图所示。

1.7、用户管理

1.7.1、账户管理

1、创建账户
create user '用户名'@'连接者的IP地址' identified by '密码'; 
# 案例:
create user jack@localhost identified by '123456'; 		-- (localhost)表示只能在本地登录。
create user jack@'127.0.0.%' identified by '123456'; 		-- 指定IP网段才能登录,(%表示任意的)。
create user jack@'%' identified by '123456'; 		-- 相当于任意IP都能登录。

2、删除账户

需登录到root账户,再去删除其他的子账户。

drop user 用户名@'连接者的IP地址';
# 案例:(创建的是什么样子的就删除什么)
drop user jack@127.0.0.1;
drop user jack@'1277.0.0.%';
drop user jack@'%';
3、修改用户和IP地址
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
4、修改密码
set password for '用户名'@'IP地址' = Password('新密码');

1.7.2、权限管理

1、授予权限
grant 权限 on 数据库.表 to '用户名'@'IP地址';
# 案例:
grant all privileges on *.* to 'jack'@'127.0.0.1';		-- jack拥有对数据库中所有数据的所有权限。

all privileges		-- 所有的权限(除grant外)
select		-- 查询权限
insert		-- 插入权限

注意:flush peivileges		-- 刷新(将数据读到内存中,从而立即生效)。
2、查看权限
show grants for '用户名'@'IP地址';
3、取消权限
revoke 权限 on 数据库.from '用户名'@'IP地址';
# 案例:
revoke all privileges on *.* from 'jack'@'localhost';		-- 取消jack的所有权限。

2、数据库、数据表及数据的管理

在这里插入图片描述

使用客户端(命令提示符)时,所有的指令以;结束,\c 退出当前行命令,\q退出mysql命令行(与quit同理)。

使用客户端(命令提示符)操作MySQL时,注释以 – 来表示。

2.1、数据库(文件夹)的管理

2.1.1、内置客户端操作

  1. 进入数据库

    use 数据库名字;
    
  2. 创建数据库

    create database 数据库名字;
    
    -- create database 数据库名字 DEFAULT CHARSET 编码;
    create database 数据库名字 DEFAULT CHARSET utf8;
    
    -- create database 数据库名字 DEFAULT CHARSET 编码 COLLATE 排序规则;
    create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    
  3. 查看数据库

    show databases;		-- 查看当前所有的数据库
    
  4. 删除数据库

    drop database 数据库名字;
    

2.1.2、使用Python操作

数据库(表)名字尽量使用英文。

import pymysql

# 连接MySQL
conn = pymysql.connect(host='127.0.0.1', port=3306,user='root', password='123456', charset='utf8')

# 创建一个邮标
cursor = conn.cursor()


# 查看数据库
cursor.execute("show databases;")
a = cursor.fetchall()
print(a)


# 创建数据库
cursor.execute("create database 第一;")
conn.commit()


# 删除数据库
cursor.execute("drop database 第一;")
conn.commit()


# 进入某个数据库查看库中所有数据表
cursor.execute('use 数据库名字;')
cursor.execute("show tables;")
b = cursor.fetchall()
print(b)


# 断开连接
cursor.close()
conn.close()

2.2、数据表(表格)的管理

2.2.1、内置客户端操作

  1. 查看数据表

    use 数据库名字;		--进入某个数据库
    show tables;		-- 查看当前数据库下的所有数据表
    
  2. 删除数据表

    drop table 数据表名字;		
    
  3. 创建数据表(并添加一些数据)

    在这里插入图片描述

    create table 数据表名字(
    	列名 类型,
        列名 类型,
    	列名 类型
    )default charset=utf8;
    
    
    
    -- 案例一:
    create table tb1(
        id int primary key,		-- 主键。(id列的值:不允许为空,不能重复)
        name varchar(16) not null,		-- name列的值:不允许为空。
        email varchar(32) null,			-- email列的值:可以为空(默认)。
        age int default 3		-- 输入数据时,如果不给age列设置值,默认值为3)default charset=utf8;
    
    
    -- 案例二:
    create table tb2(
        id int not null auto_increment primary key,		-- 不允许为空 & 自增 & 主键。
        name varchar(16) not null,		-- name列的值:不允许为空。
        email varchar(32) null,			-- email列的值:可以为空(默认)。
        age int default 3		-- 输入数据时,如果不给age列设置值,默认值为3)default charset=utf8;
    
    -- 注意:一个数据表中只能有一个自增列。(一般为主键)
    
    

2.2.2、使用Python操作

import pymysql

# 连接MySQL
conn = pymysql.connect(host='127.0.0.1', port=3306,user='root', password='123456', charset='utf8')

# 创建一个邮标
cursor = conn.cursor()

# 进入某个数据库查看库中所有数据表
cursor.execute('use 数据库名字;')
cursor.execute("show tables;")
b = cursor.fetchall()
print(b)


# 创建一个数据表
sql = """
create table TB1(
    id int not null auto_increment primary key,
    name varchar(16) not null,
    email varchar(32) null,
    age int default 3
)default charset=utf8;
"""
cursor.execute(sql)
conn.commit()


# 删除数据表 
cursor.execute("drop table TB1")		# 方式一(数据库中存在此表时则删除,不存在程序报错)
conn.commit()

cursor.execute("drop table if exists tb5")		# 方式二(加上if exists关键字,避免程序报错)
conn.commit()

# 断开连接
cursor.close()
conn.close()

2.3、数据表中关于列的常见数据类型

2.3.1、整型

int		# 表示有符号,取值范围为-2147483648 ~ 2147483647。
int unsigned		# 表示无符号,取值范围为0 ~ 4294967295。
int(5)zerofill		# 仅用于显示,当数据不满五位时,按照左边补0。例:00045

2.3.2、小数

decimal(m,d)		# m表示数据整体位数(符号除外),d表示小数部分

2.3.3、字符串

char(m)
"""
定长字符串,m代表字符串长度,最多容纳255个字符。
当输入的数据不满m个字符时,依然以m个字符存储;超出时,要么报错,要么自动截取最大255个字符。(取决于配置文件是否严格模式)
适应于固定长度内容
"""

varchar(m)
"""
变长字符串,m表示字符串长度,最多容纳65535个字节。
当输入的数据不满m个字符时,按实际实际m个字符存储;超出时,要么报错,要么自动截取最大65535个字符。(取决于配置文件是否严格模式,MySQL默认是严格模式,)
"""

text		# 一般用于保存较长的大字符串,如:文章、新闻等。

2.3.4、时间

datetime		# YYYY-MM-DD HH:MM:SS	1000-01-01 00:00:00 / 9999-12-31 23:59:59

timestap		# YYYY-MM-DD HH:MM:SS	1970-01-01 00:00:00 / 2037年

2.4、数据表中数据的管理

2.4.1、内置客户端操作

  1. 查看数据

    -- 返回列名,属性(不返回数据,但返回默认值)
    desc 表名;		-- 查看表中所有数据的属性。
    
    -- 只返回列名和数据(列下没有数据时,只返回空,不返回列名)
    select * from 表名;		-- 查看表中所有的数据。
    select 列名,列名,列名 from 表名;		-- 按列名查看相应数据并返回。
    select 列名 as 别名 from 表名;		-- 按列名查看相应数据并将其作为别名返回。
    select 列名 from 表名 where 条件;		-- 在表中按条件查看列中符合条件的数据并返回。
    
  2. 增加(插入)数据

    # 增加列(列不存在新增列)
    alter table 表名 add 列名 类型;
    alter table 表名 add 列名 类型 DEFAULT 默认值;
    alter table 表名 add 列名 类型 not null default 默认值;
    
    # 添加主键(列已经存在修改其为主键,使其具有主键的属性)
    alter table 表名 add primary key(列名);		
    
    # 在列中插入数据(列已存在,新增数据)
    insert into 表名(列名1,列名2) values(列名1的数据,列名2的数据); 
    例:insert into L1(age,num) values(7759,489); 
    
  3. 删除数据

    # 整个数据表清空(不删除列名,只删除列下的数据)
    delete from 数据表名字;		-- 速度相对较慢。
    delete from 数据表名字 where 条件;		-- 按条件删除。
    truncate table 数据表名字;		-- 速度相对较快,且无法回滚撤回。
    
    # 删除列的默认值(不删除列名,前面赋值过的也不删除,后面新增数据不默认添加)
    ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;
    
    # 删除列(会将列名和数据一起删除)
    alter table 表名 drop column 列名;
    
    # 删除主键(只删除主键的相关属性,不删除其数据和列名。)
    alter table 表名 drop primary key;		
    
  4. 修改数据

# 修改列下的数据(只修改列下面的数据,不修改列名)
update 表名 set 列名=;		-- 会把此列的所有值都修改成你给的值。
update 表名 set 列名=值 where 条件;

# 修改列的类型
alter table 表名 modify column 列名 新类型;

# 修改列的类型和列名
alter table 表名 change 原列名 新列名 新类型;

# 修改列的默认值
ALTER TABLE 表名 ALTER 列名 SET DEFAULT 1000;

2.4.2、使用Python操作

import pymysql

# 连接MySQL,并自动进入tb1数据库(databases='tb1')以免每次都需要进入的麻烦。
conn = pymysql.connect(host='127.0.0.1', port=3306,user='root', password='123456', charset='utf8',databases='tb1')

# 创建一个邮标
cursor = conn.cursor()

# 新增数据
cursor.execute('insert into tb3(id,name) values(99,78);')
conn.commit()

# 删除数据
cursor.execute('delete from tb3;')
conn.commit()

# 修改数据
cursor.execute('update tb3 set name="肖";')
conn.commit()

# 查看数据
cursor.execute("select * from tb3;")
c = cursor.fetchall()
print(c)

# 断开连接
cursor.close()
conn.close()
  • 23
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值