• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
KK筑梦人
博客园    首页    新随笔    联系   管理    订阅  订阅

数据库基础---->数据库基本概念、库操作 第三十七天 2018.11.28

数据库基本概念

什么是数据库

  存储数据的仓库

  数量巨大、效率、安全性

什么是数据:

  一切皆数据

数据库的发展史 

  文件系统

  层次型数据库:数据库系统真正开始阶段,数据的存储形式类似树形结构,所以也叫树型数据库.

  网状数据库:数据的存储形式类似网状结构

  关系型数据库

  面向对象数据库

数据库的概念

  数据库服务器

  数据库管理系统

  重点:

    库

    表

    记录

    数据 

www.mysql.org ----> 被甲骨文(oracle)收购,可能会闭源(收费)

MySQL版本(MSI)下载地址: https://dev.mysql.com/downloads/installer/

5.5/5.6/5.7 对于DBA(数据库工程师)使用时差异才大

mysql.exe mysql服务端的执行文件

mysqld.exe mysql服务端执行的文件

数据库系统有3个主要的组成部分

  1.数据库(Database System):用于存储数据的地方。

  2.数据库管理系统(Database Management System,DBMS):用户管理数据库的软件。

  3.数据库应用程序(Database Application):为了提高数据库系统的处理能力所使用的管理数据库的软件补充。

关系型数据库---->有行有列

  未来数据库将要发展成面向对象型数据库(类似字典,输入keys,蹦出values)

数据库的特点:

  实现数据共享

  减少数据的冗余度(多用户只需要在某个建立一个文件,不需要建立某个文件的多个同名文件)

  数据一致性和可维护性,以确保数据的安全性和可靠性

    主要包括: ①安全性控制:以防止数据丢失、错误更新和越权使用;

          ②完整性控制:保证数据的正确性、有效性和相容性;

          ③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。

    故障恢复

关系型数据库: 目前主流的关系型数据库:MySQL、Oracle 、 Sql server、DB2 。。。

关系型数据库效率低---->产生IO

非关系型数据库也被成为NoSQL数据库,NOSQL的本意是“Not Only SQL”

在服务器端一次性把需要加载的数据放在内存中,取时不需要IO

MySQL---->免费的开源的

MariaDB---->和MySQL几乎一模一样,是MySQL原班人马开发的---->为了防止MySQL被闭源

oracle---->一个人一个库 语法和MySQL 98%相似 自身比较大,内存不大会卡

库操作:

库的增删改查

1、创建

CREATE DATABASE DB2 charset utf8;
# 编码集为utf8

2、删除

DROP DATABASE db2;

3、使用(进入) 

use db1;

4、查看

show database;    ---->    查看当前用户下所有的库名
select DATABASE();---->    查看当前操作所在的库名称
show CREATE DATABASE db1;   ---->    查看创建库的信息

库的命名规范 

可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如: CREATE SELECT
不能单独使用数字
最长128位

用户权限管理  

用户管理(每次操作都需刷新一次)

MySQL用户格式及本机用户

@间隔符 固定的写法    '用户名'@'密码'
root@::1             # ::为省略、IP结尾为1
root@127.0.0.1       # 本机IP
root@localhost       # localhost当前电脑的映射的IP
information_schema   # 虚拟的库
mysql                # 控制mysql用户名密码的中心枢纽库 

用户的增删改查  

创建用户
    create user '用户名'@'%' identified by '密码';    %通配符、表示所有的IP都可以
    create user '用户名'@'IP地址' identified by '密码';
@间隔符 固定的写法  IP当前用户能在IP上进行操作  localhost当前电脑的映射的IP  identified by设置密码
删除用户
    drop user '用户名'@'IP地址';
修改用户
    rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';
查看用户(本机)
    直接查看mysql库下的user表即可---->比较危险   任何关于mysql库权限的操作都比较危险

权限管理

show grants for '用户'@'IP地址'                    -- 查看权限
grant  权限 on 数据库.表 to   '用户'@'IP地址'      -- 授权      *.* 通配符---->所有权限
revoke 权限 on 数据库.表 from '用户'@'IP地址'      -- 取消权限

  

#创建新用户
create user 'alex'@'localhost' identified by '123456';

#授权方式一:为alex授权 db1数据库下的所有表的 查询.更新.修改权限
grant select,update,delete on db1.*  to 'alex'@'localhost';

#授权方式二:为alex 授权 所有库的所有权限(除grant权限外)
grant all privileges on *.*  to 'alex'@'localhost';

#刷新用户权限
flush privileges;



            all privileges  除grant外的所有权限
            select          仅查权限
            select,insert   查和插入权限
            ...
            usage                   无访问权限
            alter                   使用alter table
            alter routine           使用alter procedure和drop procedure
            create                  使用create table
            create routine          使用create procedure
            create temporary tables 使用create temporary tables
            create user             使用create user、drop user、rename user和revoke  all privileges
            create view             使用create view
            delete                  使用delete
            drop                    使用drop table
            execute                 使用call和存储过程
            file                    使用select into outfile 和 load data infile
            grant option            使用grant 和 revoke
            index                   使用index
            insert                  使用insert
            lock tables             使用lock table
            process                 使用show full processlist
            select                  使用select
            show databases          使用show databases
            show view               使用show view
            update                  使用update
            reload                  使用flush
            shutdown                使用mysqladmin shutdown(关闭MySQL)
            super                   使用change master、kill、logs、purge、master和set global。还允许mysqladmin调试登陆
            replication client      服务器位置的访问
            replication slave       由复制从属使用

修改密码  

方式一: mysqladmin 命令

mysqladmin -u用户名 -p密码 password 新密码

方式二: 直接设置用户密码  

set password for '用户名'@'IP' = password('新密码');
                              # password函数会自动把明文密码加密为密文
flush privileges;      # 刷新用户权限

方式三:修改mysql库下的user表  

直接修改mysql库下的user表      不建议使用、安全隐患大
5.7版本修改密码方式:
update mysql.user set authentication_string=password('新密码') where user= '用户名'          
flush privileges; -- 刷新权限
             
5.6 版本
update mysql.user set password = password('新密码') where user= '用户名'
flush privileges; -- 刷新权限

忘记密码(仅限本机) 

用户名密码是依靠mysql库里面的表来进行检验的

此方法通过强行停止MySQL服务、绕过MySQL库检验来实现重置密码

只能在本机使用


在忘记root密码的时候,可以这样: #1.首先打开cmd 窗口,关闭mysql服务 net stop mysql #2.然后跳过权限检查,启动mysql,输入命令 mysqld --skip-grant-tables #3.重新打开一个新的cmd窗口,启动客户端(已跳过权限检查,可以直接登录) mysql #4.直接进来,修改密码 update mysql.user set authentication_string=password('123456') where user='root'; #5. 刷新权限 flush privileges;

中文乱码 

因为编码集有些不是utf8、因此会出现中文乱码问题

查询编码集

SHOW VARIABLES LIKE 'char%';

修改my.ini配置文件  

#修改方法:
#1. 创建my.ini文件,放在mysql根路径下
#2. 在该文件中添加以下内容即可:
#3. 添加此文件后需要重新启动服务,以保证此文件生效
------------------------------------------------------------
[client]

default-character-set=utf8

[mysql]

#设置mysql客户端默认字符集

default-character-set=utf8

[mysqld]

#设置3306端口

port = 3306

#允许最大连接数

max_connections=200

#服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

#创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

#解决mysql在执行sql语句后出现1055错误,sql_mode = only_full_group_by不相容

sql_mode='NO_ENGINE_SUBSTITUTION'

 如果使用的是mysql5.7版本,则需要创建my.ini文件,5.7版本以前数据库自带my,ini文件,直接改动编码即可.

 目前最稳定与常用的数据库版本为(5.6版本与5.5版本)

  

  

 

  

 

posted @ 2018-11-29 00:39  KK筑梦人  阅读(128)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3