MySQL安装和基本管理https://www.cnblogs.com/majj/p/9160383.html

管理员模式运行cmd

打开终端,输入mysqld,打开服务端.

打开终端,输入mysql,打开客户端.

  1. # 每行命令以 ; 结束
  2. delimiter % # 修改结束符为%

基础知识

将MySQL添加到Windows服务中

  1. #添加到Windows服务:
  2. mysqld --install
  3. #移除Windows服务:
  4. mysqld --remove

注册成服务之后, 以后再启动和关闭MySQL服务时, 仅需执行如下命令:

  1. #启动MySQL服务
  2. net start mysql
  3. #关闭MySQL服务
  4. net stop mysql

登录

输入: select user(); #查看当前登录的账号

当前登录的默认账号为ODBC@localhost

exit退出

如果想切换到root账号登录, 执行命令

mysql -uroot -p

在查看当前用户

select user();

管理员为root(拥有最高权限,管理员账号),密码为空,以无密码的方式登录了管理员账号,是非常危险的一件事情,所以要为管理员账号设置密码

windows 下登录设置密码

设置管理员root账号密码为123

mysqladmin -uroot -p password "123" #在登陆之前,设置初始密码 由于密码为空,因此-p可以不用. 此处要用" ", 用' '容易出问题

update mysql.user set password = password("123") where User="root"; #先登录, 之后给root用户设置密码. 如果直接用password="123"则显示明文密码,用password=password("123")则使用md5加密.

不用管这个警告

之后再登录账号, 不输入密码则会报错.

如果想将原始密码123,设置新密码为456

mysqladmin -uroot -p"123" password"456"修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码, 注意p和password不要有空格

依次执行如下操作:

  1. mysql -uroot -p456
  2. select user()

忘记密码--破解密码

跳过授权方式, 直接登录.

  1. 以管理员身份打开cmd

  2. 停掉mysql服务端

    net stop mysql

    MySQL 服务正在停止.

    MySQL 服务已成功停止。

  3. 执行如下命令跳过授权表

    跳过授权表

    mysqld --skip-grant-tables

    2018-06-09 17:12:38 0 [Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.

    2018-06-09 17:12:38 0 [Note] mysqld (mysqld 5.6.40) starting as process 6052 ...4.

  4. 再次查看

  5. 现在可以任意地更改密码, 执行如下命令

    update mysql.user set password = password("123") where User="root";

  6. 刷新权限, 执行命令

    flush privileges;

  7. 退出mysql. 执行命令: exit

  8. 让用户去加载权限, 以管理员身份进入cmd, 查看当前mysql进程

    tasklist |findstr mysql #查看当前mysql的进程, 要在控制台直接查,不要进mysql客户端

  9. 结束当前的进程, 执行如下命令

    taskkill /F /PID 6052 #杀死当前的进程PID

  10. 再次执行如下操作, 还原

统一字符编码

进入mysql客户端, 执行\s

为了统一字符编码, 请执行如下操作:

(1) my.ini 文件是mysql的配置文件,

  1. D:\mysql-5.6.42-winx64文件西创建my.ini文件 (配置文件)

(2) 将如下代码拷贝保存

  1. [mysqld]
  2. # 设置mysql的安装目录 **后面的路径一定是安装sql的目录(自己电脑的)**
  3. basedir=C:\mysql-5.7.22-winx64\mysql-5.7.22-winx64
  4. # 设置mysql数据库的数据的存放目录,必须是data
  5. datadir=C:\mysql-5.7.22-winx64\mysql-5.7.22-winx64\data
  6. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  7. # mysql端口
  8. port=3306
  9. # 字符集
  10. [mysqld]
  11. character-set-server=utf8
  12. collation-server=utf8_general_ci
  13. [client]
  14. default-character-set=utf8
  15. [mysql]
  16. default-character-set=utf8

(3) 以管理员身份重启服务, 执行如下命令

  1. net stop mysql
  2. net start mysql

(4) 在cmd中输入mysql进入mysql环境, 执行\s, 显示如下信息, 表示成功.

基本的mysql语句

操作文件夹(库)

  1. # 进入客户端后
  2. create database db1 charset utf8;

  1. # 查看当前创建的数据库
  2. show create database db1;
  3. # 查看所有的数据库
  4. show databases;

  1. alter database db1 charset gbk;

  1. drop database db1;

操作文件(表)

  1. use db1; #切换文件夹
  2. select database(); #查看当前所在文件夹

  1. create table t1(id int, name char);

  1. #查看当前的这张t1表
  2. show create table t1;
  3. # 查看所有的表
  4. show tables;
  5. # 查看表的详细信息
  6. desc t1;

  1. # modify修改的意思
  2. alter table t1 modify name char(6);
  3. # 改变name为大写的NAME
  4. alter table t1 change name NAME char(7);

删除

  1. #删除表
  2. drop table t1;

操作文件内容(记录)

  1. # 插入一条数据,规定id,name数据leilei
  2. insert t1(id,name) values(1,"mjj01"),(2,"mjj02"),(3,"mjj03");

  1. select id from db1.t1;
  2. select id,name from db1.t1;
  3. select * from db1.t1;

  1. update db1.t1 set name='zhangsan';
  2. update db1.t1 set name='alex' where id=2;

  1. delete from t1; # 清空所有
  2. delete from t1 where id=2;

库的操作

一. 系统数据库

执行如下命令, 查看系统库

  1. show databases;

information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等 performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象

mysql: 授权库,主要存储系统用户的权限信息

test: MySQL数据库系统自动创建的测试数据库

二. 创建数据库

  1. 求救语法:

    help create database;

  2. 创建数据库语法

    CREATE DATABASE 数据库名 charset utf8;

  3. 数据库命名规则

    可以由字母、数字、下划线、@、#、$

    区分大小写

    唯一性

    不能使用关键字如 create select

    不能单独使用数字

    最长128位

    基本上跟python或者js的命名规则一样

三. 数据库相关操作

  1. #查看数据库
  2. show databases;
  3. #查看当前库
  4. show create database db1;
  5. #查看所在的库
  6. select database();
  7. #选择数据库
  8. use 数据库名
  9. #删除数据库
  10. DROP DATABASE 数据库名;
  11. # 修改数据库
  12. alter database db1 charset utf8;

四.了解内容

SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:

1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER

2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT

3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

五.表的操作

  1. mysql支持的存储引擎

    mysql> show engines\G;# 查看所有支持的引擎

    mysql> show variables like 'storage_engine%'; # 查看正在使用的存储引擎

  • InnoDB 存储引擎
  • MyISAM 存储引擎
  • NDB 存储引擎
  • Memory 储存引擎
  • Infobright 存储引擎
  • NTSE 存储引擎
  • BLACKHOLE 黑洞存储引擎

指定表类型/存储引擎

  1. create table t1(id int)engine=innodb;# 默认不写就是innodb

小练习:

创建四张表,分别使用innodb,myisam,memory,blackhole存储引擎,进行插入数据测试

  1. create table t1(id int)engine=innodb;
  2. create table t2(id int)engine=myisam;
  3. create table t3(id int)engine=memory;
  4. create table t4(id int)engine=blackhole;

查看data文件下db1数据库中的文件:

  1. #.frm是存储数据表的框架结构
  2. # .ibd是mysql数据文件
  3. #.MYD是MyISAM表的数据文件的扩展名
  4. #.MYI是MyISAM表的索引的扩展名
  5. #发现后两种存储引擎只有表结构,无数据
  6. #memory,在重启mysql或者重启机器后,表内数据清空
  7. #blackhole,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录
  1. 创建表

    语法:

    create table 表名(

    字段名1 类型[(宽度) 约束条件],

    字段名2 类型[(宽度) 约束条件],

    字段名3 类型[(宽度) 约束条件]

    );

    注意:

    1. 在同一张表中,字段名是不能相同
    2. 宽度和约束条件可选
    3. 字段名和类型是必须的
  2. 创建数据库

    create database db2 charset utf8;

  3. 使用数据库

    use db2;

  4. 创建a1表

    create table a1(

      id int,

      name varchar(50),

      age int(3)

    );

  5. 插入表的记录

    insert into a1 values

    (1,'mjj',18),

    (2,'wusir',28);

  6. 查询表的数据和结构

    (1)查询a1表中的存储数据

    mysql> select * from a1;

    +------+-------+------+

    | id | name | age |

    +------+-------+------+

    | 1 | mjj | 18 |

    | 2 | wusir | 28 |

    +------+-------+------+

    rows in set (0.02 sec)

    mysql>

    (2)查看a1表的结构

    mysql> desc a1;

    +-------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +-------+-------------+------+-----+---------+-------+

    | id | int(11) | YES | | NULL | |

    | name | varchar(50) | YES | | NULL | |

    | age | int(3) | YES | | NULL | |

    +-------+-------------+------+-----+---------+-------+

    rows in set (0.16 sec)

    (3)查看表的详细结构

    mysql> show create table a1\G;

    *************************** 1. row ***************************

    Table: a1

    Create Table: CREATE TABLE a1 (

    id int(11) DEFAULT NULL,

    name varchar(50) DEFAULT NULL,

    age int(3) DEFAULT NULL

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    row in set (0.00 sec)

  7. 复制表

    (1)新创建一个数据库db3

    mysql> create database db3 charset utf8;

    Query OK, 1 row affected (0.00 sec)

    (2)使用db3

    mysql> use db3;

    Database changed

    #这是上个创建的db2数据库中的a1表

    mysql> select * from db2.a1;

    +------+-------+------+

    | id | name | age |

    +------+-------+------+

    | 1 | mjj | 18 |

    | 2 | wusir | 28 |

    +------+-------+------+

    (3)复制db2.a1的表结构和记录

    # 这就是复制表的操作(既复制了表结构,又复制了记录)

    mysql> create table b1 select * from db2.a1;

    Query OK, 2 rows affected (0.03 sec)

    (4)查看db3.b1中的数据和表结构

    #再去查看db3文件夹下的b1表发现 跟db2文件下的a1表数据一样

    mysql> select * from db3.b1;

    +------+-------+------+

    | id | name | age |

    +------+-------+------+

    | 1 | mjj | 18 |

    | 2 | wusir | 28 |

    +------+-------+------+

    rows in set (0.00 sec)

    ps1:如果只要表结构,不要记录

    在db2数据库下新创建一个b2表,给一个where条件,条件要求不成立,条件为false,只拷贝表结构

    mysql> create table b2 select * from db2.a1 where 1>5;

    Query OK, 0 rows affected (0.05 sec)

    Records: 0 Duplicates: 0 Warnings: 0

查看表结构:

  1. # 查看表结构
  2. mysql> desc b2;
  3. +-------+-------------+------+-----+---------+-------+
  4. | Field | Type | Null | Key | Default | Extra |
  5. +-------+-------------+------+-----+---------+-------+
  6. | id | int(11) | YES | | NULL | |
  7. | name | varchar(50) | YES | | NULL | |
  8. | age | int(3) | YES | | NULL | |
  9. +-------+-------------+------+-----+---------+-------+
  10. rows in set (0.02 sec)
  11. #查看表结构中的数据,发现是空数据
  12. mysql> select * from b2;
  13. Empty set (0.00 sec)

ps2:还有一种做法,使用like(只拷贝表结构,不拷贝记录)

  1. mysql> create table b3 like db2.a1;
  2. Query OK, 0 rows affected (0.01 sec)
  3. mysql> desc b3;
  4. +-------+-------------+------+-----+---------+-------+
  5. | Field | Type | Null | Key | Default | Extra |
  6. +-------+-------------+------+-----+---------+-------+
  7. | id | int(11) | YES | | NULL | |
  8. | name | varchar(50) | YES | | NULL | |
  9. | age | int(3) | YES | | NULL | |
  10. +-------+-------------+------+-----+---------+-------+
  11. rows in set (0.02 sec)
  12. mysql> select * from db3.b3;
  13. Empty set (0.00 sec)
  1. 删除表

    drop table 表名;

Day053--MySQL的更多相关文章

  1. Hadoop 中利用 mapreduce 读写 mysql 数据

    Hadoop 中利用 mapreduce 读写 mysql 数据   有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...

  2. mysql每秒最多能插入多少条数据 ? 死磕性能压测

    前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...

  3. LINUX篇,设置MYSQL远程访问实用版

    每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...

  4. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  5. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  6. 闰秒导致MySQL服务器的CPU sys过高

    今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...

  7. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

    将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...

  9. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  10. 当忘记mysql数据库密码时如何进行修改

    因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...

随机推荐

  1. 《全栈营销之如何制作个人博客》之二:php环境安装及个人博客后台搭建 让你的博客跑起来

    上一节我们讲了个人博客用什么开发语言,用什么CMS系统,从这一节我们就开始真正的干货,这一节我们讨论一下PHP环境的安装,及个人博客后台的搭建,让你的博客在正常的PHP环境中运行起来,你就可以进行后台 ...

  2. jsp内置对象-page对象

    page对象代表jsp本身,只有在jsp页面才有效.page对象本质上是被转换后的Servlet,因此它可以调用任何被Servlet类所定义的方法. 项目ch05案例:创建HttpJSPPage类的对 ...

  3. wordpress 图片上传冲突

    网上常见的wordpress图片上传 jQuery('#upload_image_button').click(function() { //formfield并未用上,可能代码遗漏了一段,怀疑和类的 ...

  4. wordpress 角色权限

    自带多媒体库上传权限:edit_other_pages

  5. deepin linux学习笔记(四)进不去图形界面怎么办?

    目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...

  6. Rx响应式编程

    RX响应式编程就是异步数据流编程:单击事件或事件总线;(观察者模式) 有一堆的函数能够创建流,也能将任何流-,也能将任何流进行组合和过滤.一个流能够作为另一个流的输入,能够将两个流合并,可以通过过滤流 ...

  7. NTFS权限和共享权限的区别

    共享权限 共享权限有三种:完全控制.更改.读取 共持本地安全性.换句话说,他在同一台计算机上以不同用户名登录,对硬盘上同一文件夹可以有不同的访问权限. 注意:NTFS权限对从网络访问和本机登录的用户都 ...

  8. VS2017内存占用高

    我的环境和硬件参数 说明:本篇所提到的方法在我的机器上经过设置是能明显改善卡顿的,但可能你的VS卡顿的原因不一定是本文所提到的,可以通过排除法找到问题所在. 我的环境和硬件参数: vs 2017 pr ...

  9. 初窥css---选择器及相关特性

    选择器及相关特性 基础选择器 标签选择器 相当于全选,在我看来局限性较大,也没啥意义的感觉,用处不太大 id选择器 有利于对于某个小盒子的部分属性进行改变,但是若是需要改的小盒子很多的话,就会很麻烦 ...

  10. 如何保持Redis和MySQL数据一致

    原文:https://blog.csdn.net/thousa_ho/article/details/78900563 1. MySQL持久化数据,Redis只读数据 redis在启动之后,从数据库加 ...