• MySQL产品简介及连接操作&SQL语句及客户端工具


    MySQL产品简介及连接操作

    MySQLs是一个真正的多线程,多用户的SQL数据库服务软件,凭借查询速度快,好性能,高可靠和易于使用等特性,成为服务领域中最受欢迎的开源关系型数据库系统。在2008年之前,MySQL醒目由MySQL AB公司进行开发,发布与支持,SUN在2008年以10亿美元收购了MySQL。4月,Oracle甲骨文宣布将以74亿美元并购SUN。目前MySQL项目有Oracle公司负责运营和维护。

    MySQL与MariaDB:
    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

    MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自麦克尔·维德纽斯的女儿玛丽亚(英语:Maria)的名字。MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL5.5中了解到MariaDB的所有功能。从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL5.6版的功能和自行开发的新功能。CentOS7系列Linux操作系统中采用MariaDB替代了MySQL数据库产品。

    关系型数据库管理系统RDBMS:

    商业:Oracle , Sybase, Infomix, SQL Server, DB2
    开源:MySQL PostgreSQL , pgsql,EnterpriseDB

    银行软件:
    操作系统:AIX(IBM-->Unix小机)RedHat

    数据库:Oracle DB2
    中间件:Weblogic Websphere Jboss

    非关系型数据库 NoSQL:
    MongoDB, Redis, HBase ,Memcached
    MySQL版本:
    Community Edtion 社区版,免费,由社区人员维护,测试及更新

    Enterprise Edtion 企业版,收费,MySQL官方维护团队人员维护,测试及更新

    1、安装MySQL

    (1)二进制安装MySQL

    (2)用rpm安装mariadb步骤:

    yum -y install mariadb mariadb-server

    systemctl start mariadb

    它的端口是3306

    dhcp:服务端67,客户端68

    ftp:20,21还有端口范围

    dns:TCP/UDP53,9

    http:80

    https:43

    ssh:22

    telnet:23

    tomcat:8080,8005,8009

    mysql:3306

    redis:63,79

    mamached:11211

    Windows远程控制:3389

    MySQL默认通过TCP:3306端口提供服务,可通过编辑/etc/my.cnf文件中"port=3306"行进行修改。

    MySQL 数据库系统也是典型的C/S(客户端/服务器)架构的应用,连接时需要专用的客户端工具,Linux下通过mysql命令工具(如果是通过rpm格式安装软件需要安装mysql软件包)。

    连接并登录到MySQL操作环境

    mysql
    -u 指定用户名
    -p 指定密码(选项和密码之间不能有空格)
    -h 指定主机
    -P 指定端口
    -S 指定Socket文件
    -e 指定SQL命令语句(非交互模式)

    [root@localhost ~]# mysql -u root -p123456;history -c 默认root为Mysql管理用户

    MySQL语句及客户端工具:

    SQL语句分类:
    1、数据定义语言(DDL)
    创建、修改或删除数据库中各种对象,包括表、视图、索引等。

    命令 :CREATE TABLE , CREATE VIEW, CREATE INDEX、ALTER TABLE ,DROP TABLE , DROP VIEW, DROP INDEX
    2、查询语言(DQL)

    按照指定的组合、条件表达式或排序检索已存在的数据库中数据,不改变数据库中数据。

    命令:SELECT...FROM...WHERE...
    3、数据操纵语言(DML)
    对已经存在的数据库进行元组的插入、删除、修改等操作

    命令:INSERT、UPDATE、 DELETE

    4、数据控制语言(DCL)
    用来授予或收回访问数据库的某种特权、

    控制数据操纵事务的发生时间及效果、对数据库进行监视
    命令:GRANT、REVOKE、COMMIT、ROLLBACK

    设置数据库用户的初始密码(刚开始没有密码,给它设置一个密码):
    [root@localhost ~]# mysqladmin -u root password '123456

    后期修改数据库用户的密码:
    [root@localhost~]# mysqladmin -u root-p旧的密码 password'新的密码'

    [root@localhost~]# mysqladmin -u root -p'TvC:Rm1ZlxtG' password '123456'

    MySQL是一套关系型数据库管理系统,在每台MySQL服务器中,均支持运行多个数据库(文件系统中的目录)(分类,按照产品划分),每个库相当于一个容器,其中存放着许多数据表,表中的每一行包含一条具体的数据关系信息,这些信息被称为数据记录。

    数据库的基本概念
    数据
    描述事物的符号记录称为数据(Data),包括数字,文字、图形、图像、声音、档案记录等以“记录”形式按统一的格式进行存储。

    数据表
    将不同的记录组织在一起,就形成了“表”,是用来存储具体数据的

    数据库
    数据库就是表的集合,是存储数据表的仓库,以一定的组织方式存储的相互有关的数据

    查询当前服务器中有哪些库:

    MariaDB [(none)]> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | auth |
    | mysql |
    | performance_schema |
    | test |
    +--------------------+
    5 rows in set (0.00 sec)

    产看数据库中的数据表信息:

    MariaDB [(none)]> use mysql

    Database changed

    查看有哪些表:

    MariaDB [mysql]> show tables;
    +---------------------------+
    | Tables_in_mysql |
    +---------------------------+
    | columns_priv |
    | db |
    | event |
    | func |
    | general_log |
    | help_category |
    | help_keyword |
    | help_relation |
    | help_topic |
    | host |
    | ndb_binlog_index |
    | plugin |
    | proc |
    | procs_priv |
    | proxies_priv |
    | servers |
    | slow_log |
    | tables_priv |
    | time_zone |
    | time_zone_leap_second |
    | time_zone_name |
    | time_zone_transition |
    | time_zone_transition_type |
    | user |
    +---------------------------+
    24 rows in set (0.00 sec)

    MySQL数据库的数据文件存放在/usr/local/mysql/data中,每个子目录对应一个数据库,在MyISAM存储引擎时每个表对应三个文件:
    [root@localhost~]# Is /usr/local/mysql/data/mysql |grep user

    user.frm         表的结构定义
    user.MYD      表的数据
    user.MYI        表的索引

    显示数据表的结构(字段(列)):

    MariaDB [mysql]> desc user;

    DESCRIBE [数据库名.]表名 = desc

    创建新的数据库:

    MariaDB [(none)]> create database crushlinux;

    创建新的数据表:

    MariaDB [crushlinux]> create table users(user_name char(18) not null,user_passwd char(48) default '',primary key(user_name));
    Query OK, 0 rows affected (0.02 sec)

    MariaDB [crushlinux]> show tables;
    +----------------------+
    | Tables_in_crushlinux |
    +----------------------+
    | users |
    +----------------------+
    1 row in set (0.00 sec)

    MariaDB [crushlinux]> desc users;
    +-------------+----------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------------+----------+------+-----+---------+-------+
    | user_name | char(18) | NO | PRI | NULL | |
    | user_passwd | char(48) | YES | | | |
    +-------------+----------+------+-----+---------+-------+
    2 rows in set (0.01 sec)

    删表:

    MariaDB [crushlinux]> drop table users;
    Query OK, 0 rows affected (0.01 sec)

    删库:

    MariaDB [crushlinux]> drop database crushlinux;
    Query OK, 0 rows affected (0.01 sec)

    向数据表中插入新的数据记录:

    (1)MariaDB [crushlinux]> insert into users(user_name,user_passwd) values('zhangsan','123');
    Query OK, 1 row affected (0.01 sec)

    (2)MariaDB [crushlinux]> insert into users values('zhaosi','123');
    Query OK, 1 row affected (0.01 sec)

    (3)MariaDB [crushlinux]> insert into users values('lisi',password('123')),('liuneng',password('123'));
    Query OK, 2 rows affected (0.01 sec)
    Records: 2 Duplicates: 0 Warnings: 0

    查看表中的数据:

    (1)MariaDB [crushlinux]> select * from users;
    +-----------+-------------------------------------------+
    | user_name | user_passwd |
    +-----------+-------------------------------------------+
    | lisi | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
    | liuneng | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
    | zhangsan | 123 |
    | zhaosi | 123 |
    +-----------+-------------------------------------------+
    4 rows in set (0.00 sec)

    (2)MariaDB [crushlinux]> select user_name from users;
    +-----------+
    | user_name |
    +-----------+
    | lisi |
    | liuneng |
    | zhangsan |
    | zhaosi |
    +-----------+
    4 rows in set (0.00 sec)

    (3)MariaDB [crushlinux]> select * from users where user_name='zhangsan';
    +-----------+-------------+
    | user_name | user_passwd |
    +-----------+-------------+
    | zhangsan | 123 |
    +-----------+-------------+
    1 row in set (0.01 sec)

    修改、更新数据表中的数据信息:

    MariaDB [crushlinux]> update users set user_passwd=password('321') where user_name='zhangsan';
    Query OK, 1 row affected (0.01 sec)
    Rows matched: 1 Changed: 1 Warnings: 0

    MariaDB [crushlinux]> select * from users;
    +-----------+-------------------------------------------+
    | user_name | user_passwd |
    +-----------+-------------------------------------------+
    | lisi | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
    | liuneng | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
    | zhangsan | *7297C3E22DEB91303FC493303A8158AD4231F486 |
    | zhaosi | 123 |
    +-----------+-------------------------------------------+
    4 rows in set (0.00 sec)

    在数据库中修改root用户的密码:

    MariaDB [mysql]> update user set password=password('123123') where user='root';
    Query OK, 3 rows affected (0.01 sec)
    Rows matched: 3 Changed: 3 Warnings: 0

    刷新授权表并Crul+d退出:

    MariaDB [(none)]> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    [root@localhost ~]# mysql -uroot -p123123
    Welcome to the MariaDB monitor. Commands end with ; or g.
    Your MariaDB connection id is 10
    Server version: 5.5.41-MariaDB MariaDB Server

    Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

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

    MariaDB [(none)]>

    在数据表中删除指定的数据记录:

    MariaDB [crushlinux]> delete from users where user_name='zhaosi';
    Query OK, 1 row affected (0.00 sec)

    设置用户权限(用户不存在是,则新建用户)

    MySQL数据库的root用户账户拥有对所有库,表的全部权限,频繁使用root账号会给数据库服务器带来 定的安全风险,实际工作中,通常会建立一些低权限的用户,只负责一部分库,表的管理和维护操作,甚至可以对查询,修改,删除记录等各种操作做进一步的细化限制,从而降低数据库的风险。

    格式:grant 权限列表 on 数据库名.表名 to 用户名@来源地址[identified by‘密码’];

    权限列表:用于列出授权的各种数据库操作,通过逗号进行分割,如:select,insertupdate等,all表示所有权限,可以执行任意操作。
    库名.表名:用于指定授权操作的数据库和表的名称,可以使用通配符(*)表示所有用户名@来源地址:用于指定用户和允许访问的客户机地址;来源地址可以是IP地址,域名,%通配符表示所有(但不能表示localhost
    MySQL通配符:

    _:任意单个字符 192.168.1_
    %:任意长度的任意字符 192.168.1.%

    案例:(只授予了查看权限)

    MariaDB [crushlinux]> grant select on crushlinux.* to 'teacher'@'localhost' identified by '123';
    Query OK, 0 rows affected (0.01 sec)

    [root@localhost ~]# mysql -uteacher -p123
    Welcome to the MariaDB monitor. Commands end with ; or g.
    Your MariaDB connection id is 12
    Server version: 5.5.41-MariaDB MariaDB Server

    Copyright (c) 2000, 2014, Oracle, MariaDB Corporation Ab and others.

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

    MariaDB [(none)]>

    MariaDB [(none)]> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | crushlinux |
    | test |
    +--------------------+
    3 rows in set (0.00 sec)

    查看用户的权限:

    MariaDB [(none)]> show grants for 'teacher'@'localhost';
    +----------------------------------------------------------------------------------------------------------------+
    | Grants for teacher@localhost |
    +----------------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'teacher'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
    | GRANT SELECT ON `crushlinux`.* TO 'teacher'@'localhost' |
    +----------------------------------------------------------------------------------------------------------------+
    2 rows in set (0.00 sec)

     撤销用户的权限:

    MariaDB [crushlinux]> revoke select on crushlinux.* from 'teacher'@'localhost';
    Query OK, 0 rows affected (0.01 sec)

    MariaDB [crushlinux]> show grants for 'teacher'@'localhost';
    +----------------------------------------------------------------------------------------------------------------+
    | Grants for teacher@localhost |
    +----------------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'teacher'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
    +----------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)

    用于显示广泛的服务器状态信息:

    MariaDB [(none)]> show status;

    显示创建特定数据库或表:

    help create databases;

    help create tables;

    显示授权用户的安全权限:

    MariaDB [(none)]> show grants;

    显示服务器错误或警告信息:

    show erroes;

    show warnings;

    显示当前的时间:

    MariaDB [(none)]> select now();

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

    | now()               |

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

    | 2019-10-13 18:13:47 |

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

    1 row in set (0.01 sec)

    显示当前用户及时间:

    (1)MariaDB [(none)]> select current_user(),current_timestamp;

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

    | current_user() | current_timestamp   |

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

    | root@localhost | 2019-10-13 18:14:52 |

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

    1 row in set (0.01 sec)

    (2)MariaDB [(none)]> select user(),now();

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

    | user()         | now()               |

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

    | root@localhost | 2019-10-13 18:15:32 |

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

    1 row in set (0.00 sec)

    授权Windows客户机地址拥有访问权限:

    MariaDB [(none)]> grant all on *.* to 'root'@'192.168.200.110' identified by '123';

    Query OK, 0 rows affected (0.00 sec)

    MariaDB [(none)]> flush privileges;

    Query OK, 0 rows affected (0.00 sec)

     

     可以在这里打命令。

    MariaDB [crushlinux]> show grants for 'teacher'@'localhost';+----------------------------------------------------------------------------------------------------------------+| Grants for teacher@localhost                                                                                   |+----------------------------------------------------------------------------------------------------------------+| GRANT USAGE ON *.* TO 'teacher'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |+----------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)

  • 相关阅读:
    JTS相关资料和示例
    微信、支付宝支付那点事
    系统化全方位监控告警,这一篇足矣
    耶鲁大学研究创造了模拟人类认知的计算机芯片
    Docker孵化的5个开源项目
    图解数据中心水系统标准和架构(大全)
    React Native 项目整合 CodePush 全然指南
    1分钟了解MyISAM与InnoDB的索引差异
    Google I/O 官方应用中的动效设计
    为了完毕月入三万的目标,我都做了哪些准备?
  • 原文地址:https://www.cnblogs.com/990624lty-jhc/p/11667135.html
Copyright © 2020-2023  润新知