数据库 mysql

Mysql

什么是数据库DB?

DB全称database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作;

sql

SQL用于访问数据库的标准化语言。
包含四部分:
DDL:数据定义语言包含定义数.据库及其对象的语句,例如表,视图,触发器等。
DML:数据操作语言包含允许更新和查询数据的语言
DCL:数据控制语言允许授予用户权限访问数据库中特定的数据的权限。
DQL:

关于安装YUM

yum安装步骤

数据库 mysql_第1张图片

数据库 mysql_第2张图片

yum安装

数据库 mysql_第3张图片

数据库 mysql_第4张图片

数据库 mysql_第5张图片

  • 清理环境

    [root@mysql ~]# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y 
    [root@mysql ~]# userdel -r mysql
    [root@mysql ~]# rm -rf /etc/my*
    [root@mysql ~]# rm -rf /var/lib/mysql
    
    
  • 下载yum源的rpm安装包

[root@mysql ~]# yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
[root@mysql ~]# vim /etc/yum.repos.d/mysql-community.repo
把安装5.7的源打开, 关闭安装8.0的源

数据库 mysql_第6张图片

这里有第二种修改的方法,方便我们使用脚本修改
[root@mysql ~]# yum repolist all |grep mysql
yum -y install yum-utils
[root@mysql ~]# yum-config-manager --disable mysql80-community
[root@mysql ~]# yum-config-manager --enable mysql57-community

直接yum安装,注意,这种方式是临时关闭,如果要永久关闭,请参考前两种
yum install -y mysql-community-server --enablerepo mysql57-community --disablerepo mysql80-community
#关闭防火墙和selinux
[root@mysql ~]# sed -ri s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config && setenforce 0
[root@mysql ~]# systemctl stop firewalld && systemctl disable firewalld

#安装必要的软件包
[root@mysql ~]# yum -y groupinstall "Development Tools"
[root@mysql ~]# yum -y install mysql-community-server
[root@mysql ~]# systemctl start  mysqld
从日志中找出密码(有可能没有密码)
[root@mysql ~]# grep "password" /var/log/mysqld.log
2018-12-26T22:41:24.218413Z 1 [Note] A temporary password is generated for root@localhost: %i+g10uS.dre

#登陆数据库
[root@mysql ~]# mysql -uroot -p'%i+g10uS.dre'
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> alter user 'root'@'localhost' identified by "QianFeng@123";
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

mysqladmin -uroot -p'old_passwd' password "new_passwd"
补充:
[root@mysql ~]# vim /etc/my.cnf
# 关闭mysql密码强度策略,生产环境切勿尝试,首次启动不可关闭
validate-password=OFF
# 跳过密码进入数据库,用于忘记密码时使用
skip-grant-tables
以上两个参数不可同时存在

update mysql.user set authentication_string=password("QianFeng012345") where User='root' and Host="localhost";

MySQL是什么?

MySQL是一个关系型数据库管理系统。
关系型数据库:依据关系模型来创建的数据库。
关系模型:“一对一”,“多对多,“一对多”
官方网址:http://www.mysql.com/
社区版本下载地址为:http://dev.mysql.com/downloads/mysql/
mysql是一个数据库管理系统,关系数据库

什么是非关系型数据库?

主要基于“非关系模型”的数据库
储存的数据是一列列的,以一行作为一个记录,列模型数据库以一列为一个记录。(特点很快)

关系型数据库与非关系型数据库的区别

1.关系型数据库:
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询;
4、学习成本低。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。吞吐量
2.非关系型数据库
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛.
2、速度快:可以使用硬盘或者内存作为载体,而关系型数据库只能使用硬盘;redis数据库单线程10W
3、成本低:数据库部署简单,基本都是开源软件。

缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;

关系型数据库:Oralce Mysql DB2 PostgreSQL SqlServer

非关系型数据库:Redis MongDB Memcache

开启mysql57源,关闭mysql80源的三种方式

1.vim /etc/yum.repo.d/mysql-community.repo
yum -y install yum-utils
对应修改 
enabled=0
2.yum-config-manager --disabled mysql80-community
yum-config-manager --enable mysql80-community
3.临时修改 | 脚本可以用
yum -y install mysql-community-server --enablerepo mysql57-community --disablerepo mysql80-community

修改配置文件使其不遵守密码策略etc/my.cnf 和忘了密码

validate-password=OFF 修改任意密码
skip-grant-tables #重启
update mysql.user set authentication_string=password('Qianfeng@123') where User='root' and Host='localhost';
跳过密码|忘了秘密
flush privileges; 刷新表格
show databases;
select * 	

关于mysql(小tips)

启动数据库
systemctl start mysqld
查找密码
grep "password" /var/log/mysqld.log
awk '/temporary password/{p=$NF}END{print p}' /usr/local/log/mysql_error.log #过滤临时密码
修改密码
mysqladmin -uroot -p'原密码' password '新密码'
修改密码(在mysql里)
先登录mysql
alter user 'root'@'localhost' identified by "QianFeng@123";
登录数据库
mysql -uroot -p''
退出数据库
[\q|exit|quit|ctrl d]

MySQL部署之源码安装

安装依赖包

注: 相关依赖包的作用

cmake由于从MySQL5.5版本开始弃用了常规的configure编译方法,所以需要CMake编译器,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。

Boost:从MySQL 5.7.5开始Boost库是必需的,mysql源码中用到了C++的Boost库扩展库,要求必须安装

源码安装
与二进制(RPM)发行版本相比,如果我们选择了通过源代码进行安装,那么在安装过程中我们能够对MySQL
所做的调整将会更多更灵活一些。因为通过源代码编译我们可以:
a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码;
b) 根据不同的软件平台环境调整相关的编译参数;
c) 针对我们特定应用场景选择需要什么组件不需要什么组件;
d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集(utf-8);
e) 同一台主机上面可以安装多个MySQL实例;

在源码安装给我们带来更大灵活性的同时,同样也给我们带来了可能引入的隐患:
a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定;
b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差;
c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂,所花费的时间更长;
# 所需要的依赖及安装mysql的包
[root@mysql_source ~]# yum -y groupinstall "Development Tools"
[root@mysql_source ~]# yum -y install ncurses ncurses-devel openssl-devel bison libgcrypt gcc gcc-c++ make cmake
bison Linux下C/C++语法分析器
ncurses:字符终端处理库
[root@mysql_source ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.24.tar.gz

# 在系统中添加运行mysqld进程的用户mysql
[root@mysql_source ~]# groupadd mysql
[root@mysql_source ~]# useradd -M -g mysql -s /sbin/nologin mysql

# 在系统中添加自定义mysql数据库目录及其他必要目录
[root@mysql_source ~]# mkdir -p /usr/local/{data,mysql,log,tmp}
[root@mysql_source ~]# chown -R mysql:mysql /usr/local/{data,mysql,log,tmp}

# 将mysql-boost-5.7.24.tar.gz解压到当前目录,并执行部署操作
[root@mysql_source ~]# tar xf mysql-boost-5.7.24.tar.gz
[root@mysql_source ~]# cd mysql-5.7.24
[root@mysql_source mysql-5.7.24]# cmake . \
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/usr/local/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

提示:boost也可以使用如下指令自动下载,如果不下载boost压缩包,把下面的这一条添加到配置中第二行
-DDOWNLOAD_BOOST=1/
参数详解:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \   安装目录
-DSYSCONFDIR=/etc \   配置文件存放 (默认可以不安装配置文件)
-DMYSQL_DATADIR=/usr/local/mysql/data \   数据目录   错误日志文件也会在这个目录
-DINSTALL_MANDIR=/usr/share/man \     帮助文档 
-DMYSQL_TCP_PORT=3306 \     默认端口
-DMYSQL_UNIX_ADDR=/usr/local/tmp/mysql.sock \  sock文件位置,用来做网络通信的,客户端连接服务器的时候用
-DDEFAULT_CHARSET=utf8 \    默认字符集。字符集的支持,可以调
-DEXTRA_CHARSETS=all \   扩展的字符集支持所有的
-DDEFAULT_COLLATION=utf8_general_ci \  支持的
-DWITH_READLINE=1 \    上下翻历史命令
-DWITH_SSL=system \    使用私钥和证书登陆(公钥)  可以加密。 适用与长连接。坏处:速度慢
-DWITH_EMBEDDED_SERVER=1 \   嵌入式数据库
-DENABLED_LOCAL_INFILE=1 \    从本地倒入数据,不是备份和恢复。
-DWITH_INNOBASE_STORAGE_ENGINE=1  默认的存储引擎,支持外键
[root@mysql_source mysql-5.7.24]# echo $?
0
[root@mysql_source mysql-5.7.24]# make -j `lscpu | awk 'NR==4{ print $2 }'`

......
[100%] Built target udf_example
[root@mysql_source mysql-5.7.24]# echo $?
0
[root@mysql_source mysql-5.7.24]# make install

......
-- Installing: /usr/local/mysql/support-files/mysql.server
[root@mysql_source mysql-5.7.24]# echo $?
0
[root@mysql_source mysql-5.7.24]#
Congratulations Complete!


# 初始化MySQL安装配置
1.提升MySQL命令为系统级别命令
[root@mysql_source ~]# echo 'export PATH=$PATH:/usr/local/mysql/bin'>>/etc/profile
[root@mysql_source ~]# source /etc/profile

2.拷贝默认配置文件至/etc/my.cnf中
[root@mysql_source mysql]# chown -R mysql.mysql /usr/local/mysql
[root@mysql_source ~]# cd /usr/local/mysql/mysql-test/include
[root@mysql_source include]# cp /etc/{my.cnf,my.cnf.bak}
[root@mysql_source include]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql                    #安装目录
datadir = /usr/local/data					 #数据存放目录
tmpdir = /usr/local/tmp						 #/tmp缓存目录
socket = /usr/local/tmp/mysql.sock			 #指定socket文件的位置
pid_file = /usr/local/tmp/mysqld.pid			 #指定pid文件的位置
log_error = /usr/local/log/mysql_error.log	 #错误日志的位置
slow_query_log_file = /usr/local/log/slow_warn.log  #慢日志查询

server_id = 1						#server-id=??
user = mysql						#指定用户
port = 3306							#指定端口
bind-address = 0.0.0.0				#监听地址(允许所以ip访问)
character-set-server = utf8			#字符集
default_storage_engine = InnoDB		#引擎

3.执行数据库服务初始化操作
[root@mysql_source mysql]# mysqld --defaults-file=/etc/my.cnf --initialize --user='mysql'

4.启动mysqld服务
[root@mysql_source mysql]# mysqld_safe --defaults-file=/etc/my.cnf & (&在后台启动)
mysqladmin -p123(密码) shutdown (停止)
[1] 25705
2019-8-18T09:19:35.334751Z mysqld_safe Logging to '/usr/local/log/mysql_error.log'.
2019-8-18T09:19:35.379829Z mysqld_safe Starting mysqld daemon with databases from /usr/local/data

5.配置mysqld服务的管理工具(便于启动)
[root@mysql_source support-files]# cd /usr/local/mysql/support-files
[root@mysql_source support-files]# cp mysql.server /etc/init.d/mysqld
systemctl daemon-reload #重新启动
[root@mysql_source support-files]# systemctl start mysqld
[root@mysql_source support-files]# systemctl enable mysqld

# 登录数据库并进行更改密码
[root@mysql_source mysql]# grep "password" /usr/local/log/mysql_error.log
2019-8-18T09:18:34.214401Z 1 [Note] A temporary password is generated for root@localhost: ejhszb2:m3wJ
[root@mysql_source tmp]# mysql -uroot -p"ejhszb2:m3wJ"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24-log

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> alter user 'root'@'localhost' identified by "(Bavdu..1228)";


数据库基本操作

增删改查

增删改查
     库    存放数据的目录
     表    文件(普通编辑器打不开)

修饰符    

     行叫记录 
     列叫字段    字段名称
       
     神器     edit    在edit里边编辑,wq保存,出来敲一个分号;  


创建库   
        create database   company;
查看库
        show databases;                  
        show create databse   company; 
进入库  
        use  company;
创建表 
        create table   t1(id int(2),name char(20),age int);
                       字段 类型    字段 类型(长度),字段 类型         (字段后边的就是字段的修饰符(约束条件))
查看表
        (show   desc(describe)   select)   
     查看表名称
        		show tables;    
        		desc  t1;(表的详细字段信息) 
     查看表创建过程     
        		show create table   t1;    <----- 当表特别长的时候;该为\G ,则把表向左旋转90度,可以更清楚看到               
        第一列显示字段名称
        第二列显示记录     
     查看表结构  
            desc  t1;
     查看表记录  
            select   *   from  表名;     
            select   字段,字段  from  表名; 
     查看表状态   
            show  table status  like  '表名' ;


修改表
            (alter) (add  delect  change)
     修改表名   
                    rename table 原表名  to  新表名;         
                    rename table t11 to t9;   alter table t9 rename to t1;
     添加字段   
            alter table 表名  add  字段   修饰符;       
            alter table t1 add gender char(20);     
            alter table t1 add grade char(20) after id;  
            alter table t1 add zhuanye char(20)  first;
     删除字段  
            alter table  表名  drop  字段;  
     修改字段  
            alter table 表名 change  旧字段  新字段 修饰符;   change修改字段名称,类型,约束,顺序
            alter table 表名 modify  字段  属性 修饰符;     modify 不能修改字段名称
            alter table t1 change zhuanye major varchar(20) after gender; 
            alter table t1 modify major  varchar(20)  after age;     

```
 修改记录                                         
        (inster  update  delete  where)
 添加记录   
        insert into  表名 values  (),(),(),();    
        insert into  表名(字段,字段,字段)  values  (),(),();  
        insert into t1 values(1,'2','yingge',18,'12','male');
        insert into t1(name,grade) values ('wing','1');
        insert into t1(name,grade) values ('newrain','2'),('houzi','2'); 
        insert into t1 set name='jianjian',grade='1';

 修改记录(更新)
        update 表名  set 字段=' ' where  主键=' ';
       例子: update t1 set grade=4 where name='yingge';  
 删除记录 
        delete from  表名 where  主键字段=' ';     
        delete from 表名;       
        delete from  t1 where id=5;         

 删除表  drop table  表名;
 例子: drop table  t1;
 删除库  drop  databse 库名;  
 例子:       drop database  company;    
```

各种查询
    select id,name from employee5 where id<=5;
    select id,dep_id,id*dep_id from company.employee5  where id<=5;
    select id*dep_id as "id and dep_id's sum" from company.employee5  where id<=5;

MySQL存储引擎(拓展)

MySQL引擎:
可以理解为,MySQL的“文件系统”,只不过功能更加强大。

MySQL引擎功能:
除了可以提供基本的存取功能,还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。和磁盘打交道,mysql中组织。

1.什么是外键:外键的主要作用是保持数据的一致性、完整性。
2.什么是索引:索引相当于书中的目录,可以提高数据检索的效率,降低数据库的IO。MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的
3.什么是事务:事务是由一步或几步数据库操作这系列操作要么全部执行,要么全部放弃执行。程序和事务是两个不同的概念。

事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolatio >)和持续性(Durability)。这四个特性也简称ACID性。
		(1)原子性:事务是应用中最小的执行单位,就如原子是自然界最小颗粒,具有不可再分>的特征一样。事务是应用中不可再分的最小执行体。(最小了,不可再分了)
		(2)一致性:事务执行的结果,必须使数据库从一个一致性状态,变到另一个一致性状态>。当数据库中只包含事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性
来保证的。(说罢了就是白狗变成了黑狗,不能出现斑点狗!)
		(3)隔离性:各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务,都>是隔离的。也就是说:并发执行的事务之间不能看到对方的中间状态,并发执行的事务之间
不能相互影响。(说白了,就是你做你的,我做我的!)
		(4)持续性:持续性也称为持久性,指事务一旦提交,对数据所做的任何改变,都要记录>到永久存储器中,通常是保存进物理数据库。(说白了就是一条道跑到黑)

4.什么是行锁与锁表:可以将一张表锁定和可以单独锁一行的记录。为了防止你在操作的
同时也有别人在操作。

mysql常见的储存引擎

  • InnoDB

  • MyIsam

  • Memory(也叫HEAP)堆内存

  • Blackhole(黑洞引擎)异地主从

  • Archive(归档引擎)

    为什么要合理选择数据库存储引擎:
      MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
    
      这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎。MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
    

MyISAM和InnoDB的区别(了解)

MyISAM和InnoDB的区别 
Mysql在V5.1之前默认存储引擎是MyISAM;在此之后默认存储引擎是InnoDB
MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,自动提交,这样会影响速度,所以最好是把多条SQL语句显示放在begin和commit之间,组成一个事务去提交。
InnoDB支持数据行锁定,MyISAM不支持行锁定,只支持锁定整个表。即 MyISAM同一个表上的读锁和写锁是互斥的,MyISAM并发读写时如果等待队列中既有读请求又有写请求,默认写请求的优先级高,即使读请求先到,所以 MyISAM不适合于有大量查询和修改并存的情况,那样查询进程会长时间阻塞。因为MyISAM是锁表,所以某项读操作比较耗时会使其他写进程饿死。
InnoDB支持外键,MyISAM不支持。
Innodb能存储64TB,MyISAM能存储256TB
InnoDB不支持全文索引,而MyISAM支持。全文索引是指对char、 varchar和text中的每个词(停用词除外)建立倒排序索引。MyISAM的全文索引其实没啥用,因为它不支持中文分词,必须由使用者分词后加入空格再写到数据表里,而且少于4个汉字的词会和停用词一样被忽略掉。(书的目录)
MyISAM支持GIS数据,InnoDB不支持。即MyISAM支持以下空间数据对象:Point,Line,Polygon,Surface等。
没有where的count(*)使用MyISAM要比InnoDB快得多。因为MyISAM内置了一个计数器,count(*)时它直接从计数器中读,而InnoDB必须扫描全表。

其他的存储引擎

MEMORY内存型引擎(了解)
		MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问
		MEMORY特点: 
    所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

Archive(归档引擎)
  	如何选择引擎:如果要提供提交、回滚、并要求实现并发控制,InnoDB是一个好的选择;如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率;如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎;MySQL中使用该引擎作为临时表,存放查询的中间结果;如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive。

查看支持的存储引擎

mysql> show engines;

数据库 mysql_第7张图片

看你的mysql当前默认的存储引擎:

mysql> show variables like '%storage_engine%';

如何查看Mysql服务器上的版本

mysql> select version();

创建时候指定引擎

mysql> create table t1(id int,manager char(10)) engine =innodb;

创建并管理基本表

[root@mysql ~]# mysql -uroot -p"123"			#登录数据库
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.24 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;				##查询数据库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database newrain default charser 'utf8';		##创建数据库
Query OK, 1 row affected (0.00 sec)

mysql> flush privileges;			##刷新数据库及表的列表内容(常用于授权之后)
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| newrain              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> drop database newrain;			##删除数据库
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> use mysql;					##使用数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;					##查看库中的表
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

mysql> select * from mysql.user\G;				##查询表中的内容,“\G”为标准化输出,不加会乱码
*************************** 1. row ***************************
                  Host: localhost
                  User: root
           Select_priv: Y
           Insert_priv: Y
           Update_priv: Y
           Delete_priv: Y
           Create_priv: Y
             Drop_priv: Y
           Reload_priv: Y
         Shutdown_priv: Y
          Process_priv: Y
             File_priv: Y
            Grant_priv: Y
       References_priv: Y
            Index_priv: Y
            Alter_priv: Y
          Show_db_priv: Y
            Super_priv: Y
 Create_tmp_table_priv: Y
      Lock_tables_priv: Y
          Execute_priv: Y
       Repl_slave_priv: Y
      Repl_client_priv: Y
      Create_view_priv: Y
        Show_view_priv: Y
   Create_routine_priv: Y
    Alter_routine_priv: Y
      Create_user_priv: Y
            Event_priv: Y
          Trigger_priv: Y
Create_tablespace_priv: Y
              ssl_type:
            ssl_cipher:
           x509_issuer:
          x509_subject:
         max_questions: 0
           max_updates: 0
       max_connections: 0
  max_user_connections: 0
                plugin: mysql_native_password
 authentication_string: *7C80E5F2B2DC4B10B1D2CFF160F5C8240720B612
      password_expired: N
 password_last_changed: 2019-8-18 15:18:57
     password_lifetime: NULL
        account_locked: N

mysql> select User,Host,authentication_string from user;			##根据条件查询表中的内容
+---------------+-----------+-------------------------------------------+
| User          | Host      | authentication_string                     |
+---------------+-----------+-------------------------------------------+
| root          | localhost | *5CD4C2B38AEF87547D2735419AECEC731E44C1B8 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+---------------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

mysql> update user set authentication_string=password('(Baidu..1229)') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)						##更新表中的内容
Rows matched: 1  Changed: 1  Warnings: 1

mysql> exit															##退出数据库
Bye
[root@mysql ~]#

你可能感兴趣的:(数据库,mysql)