mysql安装及操作,MySQL安装与操作指南

马肤

温馨提示:这篇文章已超过465天没有更新,请注意相关的内容是否还可用!

摘要:,,本文介绍了MySQL的安装及操作过程。提供了安装MySQL的步骤,包括下载、解压、配置环境变量等。详细阐述了MySQL的基本操作,包括创建数据库、设计表结构、插入数据、查询数据等。通过本文,读者可以了解MySQL的安装方法和基本操作方法,为数据库管理和应用提供基础知识和实践指导。

一、Mysql

1.1 MySQL数据库介绍
1.1.1 什么是数据库DB?

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

1.1.2 什么是sql?

SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。

SQL包含三个部分:

  • DDL 数据定义语言包含定义数据库及其对象的语句,例如表,视图,触发器,存储过程等。

    • DML 数据操作语言包含允许更新和查询数据的语句。(在这里查询语言可分为DQL)

      • DCL 数据控制语言允许授予用户权限访问数据库中特定数据的权限。

        1.1.3 Mysql是什么?
        • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

        • My是MySQL的联合创始人 - Monty Widenius 的女儿的名字。MySQL是MySQL的组合,这就是MySQL命名的由来。

        • MySQL的官方网址: MySQL ,MySQL的社区版本下载地址为: MySQL :: Download MySQL Community Server ,在写本文时,当前的MySQL最新版本是:8.0

        • MySQL是一个数据库管理系统,也是一个关系数据库。它是由Oracle支持的开源软件。这意味着任何一个人都可以使用MySQL而不用支付一毛钱。 另外,如果需要,还可以更改其源代码或进行二次开发以满足您的需要。

        • mysql安装及操作,MySQL安装与操作指南 第1张

        • mysql安装及操作,MySQL安装与操作指南 第2张

          1.1.4 mysql和mariadb的前世今生
          • MySQL的名字,来自Michael Widenius的女儿My,My是Michael Widenius和前妻的女儿。 MariaDB的名字,来自Michael Widenius的小女儿Maria,Maria是Michael Widenius和第二任妻子的女儿。 Michael Widenius和前妻还有个儿子叫Max,当然,这个儿子的名字也没有浪费。在2003年的时候,德国软件公司SAP与MySQL建立合作关系,SAP旗下的数据库产品SAP DB被重新命名为MaxDB,其中的Max正是来自Michael Widenius的儿子的名字。

            1.1.5 什么是关系型数据库(SQL)?
            • 关系型数据库是依据关系模型来创建的数据库。

            • 所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。

            • 关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)

            • 数据的存储形式:

            • mysql安装及操作,MySQL安装与操作指南 第3张

              1.1.6 什么是非关系型数据库(NOSQL)?
              • 非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库)

              • 非关系型模型比如有: 存储的数据是一列列的。关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录。(这种模型,IO很快,主要是一些分布式数据库)

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

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

                非关系型数据库:Redis MongDB Memcache

                1.2 MySQL安装
                主机名IP地址配置信息部署服务
                mysql39.97.123.93 172.17.105.55CPU:2 RAM:2 DISK:20Gyum-mysql
                Mysql_source39.97.125.73 172.17.105.56CPU:2 RAM:2 DISK:20G编译-mysql
                1.2.1 MySQL部署之yum安装

                Mysql开源数据库

                https://www.mysql.com //mysql官网

                yum安装步骤

                mysql安装及操作,MySQL安装与操作指南 第4张

                mysql安装及操作,MySQL安装与操作指南 第5张

                yum安装

                mysql安装及操作,MySQL安装与操作指南 第6张

                mysql安装及操作,MySQL安装与操作指南 第7张

                mysql安装及操作,MySQL安装与操作指南 第8张

                • 清理环境

                  [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-11.noarch.rpm
                    [root@mysql ~]# vim /etc/yum.repos.d/mysql-community.repo
                    把安装5.7的源打开, 关闭安装8.0的源

                    mysql安装及操作,MySQL安装与操作指南 第9张

                    这里有第二种修改的方法,方便我们使用脚本修改
                    [root@mysql ~]# yum repolist all |grep mysql
                    [root@mysql ~]# yum-config-manager --disable mysql80-community
                    [root@mysql ~]# yum-config-manager --enable mysql57-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 ~]# 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
                    ​
                    ​
                    ​
                    ​
                    补充:
                    [root@mysql ~]# vim /etc/my.cnf
                    # 关闭mysql密码强度策略,生产环境切勿尝试,首次启动不可关闭
                    validate-password=OFF
                    # 跳过密码进入数据库,用于忘记密码时使用
                    skip-grant-tables
                    1.2.2 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/mysql/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_READLINE=1 \
                    -DWITH_SSL=system \
                    -DWITH_EMBEDDED_SERVER=1 \
                    -DENABLED_LOCAL_INFILE=1 \
                    -DWITH_INNOBASE_STORAGE_ENGINE=1
                    ​
                    提示:boost也可以使用如下指令自动下载,如果不下载bost压缩包,把下面的这一条添加到配置中第二行
                    -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  }'`
                    ​
                    ......
                    [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 &
                    [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
                    [root@mysql_source support-files]# chkconfig --add mysqld
                    [root@mysql_source support-files]# chkconfig mysqld on
                    ​
                    # 登录数据库并进行更改密码
                    [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)";

                    二、数据库基本操作

                    2.1 结构化语言SQL介绍

                    数据查询语言(DQL:Data Query Language): 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词。

                    数据操作语言(DML:Data Manipulation Language): 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

                    数据控制语言(DCL):(Data Control Language): 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

                    数据定义语言(DDL):(Data Define Language): 其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

                    重点掌握:

                    DQL
                    名词解释
                    数据库服务器运行着数据库应用的设备
                    数据库表的管理单元
                    字段、记录
                    记录字段的管理单元
                    字段字段名,字段类型、长度,字段约束组成
                    类型字符,数字,日期
                    约束NULL NOTNULL等
                    增删改查
                         库    存放数据的目录
                         表    文件(普通编辑器打不开)
                    ​
                    修饰符    
                      
                         行叫记录 
                         列叫字段    字段名称
                       
                         神器     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;    是隔离的。也就是说:并发执行的事务之间不能看到对方的中间状态,并发执行的事务之间
                    不能相互影响。(说白了,就是你做你的,我做我的!)
                            (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安装及操作,MySQL安装与操作指南 第10张

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

                      mysql> show variables like '%storage_engine%';

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

                      mysql> select version();

                      创建时候指定引擎

                      mysql> create table t1(id int,manager char(10)) engine =innodb;
                      2.3 创建并管理基本表
                      [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;     ##创建数据库
                      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 ~]#

                      思考题:

                      Q: 通常在企业内部我们部署完一台mysql服务器会很慢, 但是为了应对企业成百上千台的要求, 我们的部署显得很捉襟见肘, 那么我们在部署完一台机器之后如何避免漫长的等待快速部署很多台符合要求的mysql服务器呢?

                      mysql安装

                      1、关系型数据库 mysql、mariadb、sqlite 二维关系模型

                      2、非关系型数据库 redis、memcached

                            sql 四个部分 DDL 数据库定义语言 创建数据库,创建用户,创建表 DML 数据库操作语言            增删 改 DQL 数据库查询语言 查 DCL 数据库控制语言 授权 收权

                      3、yum安装mysql

                      3.1 保证环境干净(注意,生产环境确认后再处理)

                      3.2 安装mysql的yum源

                      3.3 修改需要安装的版本

                      3.4 安装mysql-community-server

                      3.5 确认

                           3.5.1 启动数据库 # 这里失败一般是环境问题。

                           3.5.2 找到密码-修改密码 # 注意-p后面没空格 password后面有空格 mysqladmin -uroot -p'6Ghrfeu)nU;G' password 'QianFeng@123' 3.5.3 测试登录

                      4、yum安装的mysql都干了什么 4.1 安装内容: 4.1.1 /etc/my.cnf 配置文件 4.1.2 /var/lib/mysql 数据目录 4.1.3 /var/log/mysqld.log 日志位置 4.1.4 /usr/bin/mysql 客户端命令 mysqladmin 管理员命令 mysqld 服务端命令

                      5、卸载mysql 5.1 如果mysql启动,需要关闭 5.2 卸载mysql软件服务 5.3 删除用户、数据目录、日志

                      6、内网安装mysql 6.1 更换源 curl -O https://gitea.beyourself.org.cn/newrain001/shell-project/raw/branch/master/os/get-repo.sh &>/dev/null && sh get-repo.sh 6.2 安装mysql 6.3 与前面的yum安装一样操作

                      7、编译安装mysql

                      7.1 安装依赖包

                      7.2 找到源码包并检测,解压缩

                      7.3 创建用户,创建数据目录

                          7.3.1 数据存放位置 /opt/data

                          7.3.2 配置文件存放位置 /opt/db_config

                          7.3.3 安装位置 /opt/mysql

                          7.3.4 创建目录 mkdir /opt/{data,db_config,mysql}

                          7.3.5 授权 chown mysql.mysql -R /opt/{data,db_config,mysql}

                          7.3.6 确认防火墙selinux

                      7.4 编译安装

                          7.4.1 参数准备 cmake . \ -DWITH_BOOST=boost/boost_1_59_0/ \ -   DCMAKE_INSTALL_PREFIX=/opt/mysql \ -DSYSCONFDIR=/opt/db_config \ -DMYSQL_DATADIR=/opt/data \ -DINSTALL_MANDIR=/usr/share/man \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_UNIX_ADDR=/tmp/mysql.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

                          7.4.2 编译和安装

                          7.4.3 初始化

                          7.4.4 配置文件创建 创建日志目录 mkdir /var/log/mysql && chown mysql.mysql /var/log/mysql vim my.cnf # 放到配置文件目录下 [mysqld] basedir = /opt/mysql datadir = /opt/data tmpdir = /tmp socket = /tmp/mysql.sock pid_file = /tmp/mysqld.pid log_error = /var/log/mysql/mysql_error.log slow_query_log_file = /var/log/mysql/slow_warn.log

                      server_id = 1 user = mysql port = 3306 bind-address = 0.0.0.0 character-set-server = utf8 default_storage_engine = InnoDB

                           7.4.5 启动,实现命令的便捷实用和便捷启动 echo 'export PATH=$PATH:/opt/mysql/bin' >> /etc/profile # 修改查找命令的路径 mysqld --defaults-file=./db_config/my.cnf --initialize --user='mysql' # 初始化 cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld # 修改为可以使用systemctl 启动,注意,复制之后需要执行systemctl daemon-reload

                      mysql 操作

                      1、客户端 mysql -u用户(root) -p密码(没有) -h 远程地址(权限) -P 端口(3306) -S socket文件位置(/var/lib/mysql/mysql.sock) 退出客户端: exit ctrl+d \q

                      2、增删改查 # 注意,每一条sql后面必须有;

                      2.1 数据库操作

                      查看数据库 show databases;

                      创建数据库 create database 数据库名(小写字母) default charset 'utf8';

                      查看自己当前再哪个数据库 select database(); 进入数据库 use hello;

                      查看状态 status; 删除数据库 drop database hello;

                      2.2 数据表操作

                      查看表 show tables;

                      创表 create table t1(name varchar(20), gender enum('男','女','中'));

                      插入数据 insert into hello.t1 values('老王', '男');

                      查看数据 select * from t1;

                      修改数据 update t1 set gender = '女' where name = '老王';

                      删除数据 delete from t1 where name='老王';

                      删除表 drop table t1;

                      2.3 常用操作

                      查看创建语句 show create 资源名

                      查看表结构 desc t2;


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码