mysql数据库详解(续二)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

mysql数据库登陆问题解决汇总


    首先需要说明一下,MYSQL数据库登陆的方式,通常就是本地登陆(localhost)和远程登陆,那么这里在深入地了解一部localhost和127.0.0.1的区别是什么,两者都是表示本地,但是,localhost在进行通信过程中并不经过网卡,或者说在系统的应用程序内部就直接进行通信了,而127.0.0.1是经过网卡的,通过了网卡的解析,这样就会有防火墙和其他通讯的安全限制产生,这就是localhost和127.0.0.1的区别。

    然后我这里在说明一下mysql常用的管理工具,phpmysql和sqllog,这两个工具在通讯是的工具原理是不同的,我简单说一下了,其实复杂的我也不知道了,呵呵。

    PHPMySQL是通过解压tar包并放到web目录下,然后编辑config.sample.inc.php文件,并更名为config.inc.php。然后通过url登录,这里要注意了,这个时候通过url登录到mysql数据库中属于本地登陆,而不属于远程登陆。那么在这是通过phpmysql登录数据库时创建的用户就要有localhost的登录权限,否则会无法登录。

    sqllog是一个独立的管理mysql数据库的软件,可以直接安装到任意客户端主机上,需要访问远程mysql服务器的时候,直接进行配置即可,和常见的远程管理工具,secureCRT、putty等是非常相同的。这个工具登录mysql时采用的是远程登陆的方式,如果用户要能够通过sqllog登陆数据库需要授予远程登陆的权限,比如10.40.0.%,10.40.0.60等。

    那么当同一个用于拥有多个权限的时候,选择的排序是如何的呢?

    首先我们先看看通常登陆到mysql后的用户是如何进行身份验证的。

    select user(),current_user();
+--------------------------+-----------------------+
| USER()                    | CURRENT_USER() |
+-------------------------+------------------------+
| server@localhost    | @localhost          |
+-------------------------+-------------------------+
1 row in set (0.00 sec)

user():返回的是客户端登录时指定的用户名和主机名。

current_user():mysql数据库使用授权表中的那个用户来认证你的登陆请求。

@localhost是系统在初始化的时候创建的账户,意思是任意用户(匿名)都可以登陆,权限比较低。也就是说登陆任何人都可以登陆mysql。

这里重点说一下服务器验证客户端访问的权限规则。

首先客户端访问服务器需要提供三个要素,用户名,密码,主机名。这三个要素需要匹配的是用户名和主机名,那么谁先谁后呢,服务器会先匹配主机名,然后匹配用户名。

主机名可以有多个范围设定,如果多个范围设定对于同一个用户都适用,就优先选择范围小的,精准的。

比如10.% ,10.40.0.%,10.40.0.56,会优先选择10.40.0.56这个主机名进行匹配。

其次匹配用户名,如果对于一个范围内有多个用户可以选择,比如具体的用户名test,匿名用户,那么就会优先选择具体的用户名。

如果两个条件结合起来,就是一个and的运算了。

例如: mysql -u test 登陆mysql,在mysql中有两个匹配条目:‘test’@‘%’和 @'localhost'

由于是本地登陆,那么@localhost的范围要小于@“%”(%代表任意主机,范围更大),所以登陆的时候回按照@localhost(匿名)方式登陆。

所以为了安全起见,建议删除匿名用户登陆@localhost。

文章选自:http://www.linuxidc.com/Linux/2015-03/115164.htm

Linux系统架构师必备--MySQL入门之mysql客户端基本用法(02):http://edu.51cto.com/lesson/id-75682.html



关系型数据库的管理对象:表、视图、索引、用户、事物、存储过程、存储函数、触发器、事件调度器。

第四节 MYSQL数据库基础知识

一、单元格类型(cell)

字符集:

字符编码的含义:

        通过一组0、1字符串来表示一个特定的字符,英文使用1个字节表示就可以表示所有英文字符的变化,(24个字符,而一个字节8位有256种变化,所以足够表示所有英文字母以及各种符号了)而中文汉字太多,一个字节表示不了所有变化,所以用两个字节就是65536种变化,也可以表示中国几乎所有的汉字了,创造字    符集很容易,但是要实现标准化,就需要一个组织将字符集标准化,让他在网恋通讯中知道这种变化代表的到底是那个汉字。

        常见的汉字字符集包括GB2312,GB1830,GBK,UTF。unicode(将中文、英文进行统一编码,减少中英文混淆)

        字符本身也是有排序的,并且即使同一个字符集也可以有多种排序规则。


Linux系统架构师必备--MySQL入门之字符集详解:http://edu.51cto.com/lesson/id-75690.html


查看字符集相关命令

1、显示mysql支持的所有字符集:

show character set;

2、显示所有字符集的排序规则:

show collation;

3、查看当前mysql的排序规则:

show variables like “%char%”

表:存在于库中,而库就是一个容器。

行row

列colum

字段属性:字段名(不区分大小写),数据类型、

关系型数据库:

约束:限制字段类型

1、数据类型:

        1.1字符型:

    char

    varchar

    binary

    varbinary

    修饰符:not null、default

1.2数值型
    精确数值型
       1.2.1 整型int:
                tinyint  1byte,0-255
                smallinit:2byte,
                mediuminit:3byte
                init:4byte
                biginit:8byte
        1.2.2近似数值型
        1.2.3浮点型
                float
                double
                real

1.3日期时间型

        date

        time

        datetime

1.4布尔型

1.5内置类型 

Linux系统架构师必备--MySQL入门之数据库数据类型 :http://edu.51cto.com/lesson/id-75695.html

二、数据库键值

1、主键:primary key

        不能空缺,并且是整个表中唯一的,不能重复。

2、唯一键:uniq key

        可以空缺,但是如果不空缺就必须是唯一存在的。

3、外键约束(应用性约束):foreign key

就是第一个一个表的一个字段是第二个表的字段描述,如果另一个表里没有对整个字段的描述,那个第一个表就不能使用整个被引用的字段

表一:

name id age classid

jerry   1    12    2

tom    1    11    2

lusi     1    13    2

表二

classid    class

1                二班

2                二班    

3                二班

4、检查性约束:

用来定义字段类型的范围(mysql不支持)

Linux系统架构师必备--MySQL入门之mysql键类型详解:http://edu.51cto.com/lesson/id-75693.html

4F2AC94FC1BD4AF4AF30B341684F17CF

三、创建和维护数据库

1、创建表(区分大小写)

create table tb_name (coll defination coll2 defination)

步骤:1、需要创建数据库。2、设置默认数据库use databasename。3、创建表。

例如:create table sutdents (name char(30)not null ,id tinyinit unstgned,age tinyinit unsigned,class varchar(20)not null,primary key(name))

CREATE TABLE tb1 (id tinyint unsigned not null primary key auto_increment,name char(30) not null unique key,age tinyint  unsigned,gandar char(1) default 'm',couse varchar(50) not null);


Linux系统架构师必备--MySQL入门之创建表:http://edu.51cto.com/lession/id-75696.html

2、删除表

drop table tablename 操作不可逆,谨慎操作。



四、sql语言

    DDL:data defination language 数据定义语言

                CREATE 、DROP、ALTER

    DML:data manapulation lanaguage 数据管理语言

                INSERT、DELETE、UPDATE

    DCL:data control lanaguage 数据控制语言

                grant、REVOKE

1、数据的更新和插入

INSERT

插入,字符加单引号,数值不用引号。

a、插入一行信息

mysql> insert into student (name,id,age,class) values ('jerry',1,10,'2 class');

Query OK, 1 row affected (0.00 sec)

b、插入多行信息

mysql>insert into student (name,class)values (’tom’,’1 class'),(’suni’,’3 class’);

注意:1、插入的内容如果是数值型不用加单引号,如果是字符型一定要加单引号。

   2、如果是完整的输入所有的字段信息可以不用输入前面的字段名。

Linux系统架构师必备--MySQL入门之删除表与数据插入:http://edu.51cto.com/lesson/id-75726.html   

select

select 字段 from 表

         比较运算符:>,<,>=,<=,!=,=。

1、查找用户名为root的用户
mysql> select * from user where user='root'\G
2、查找用户名不是root的用户
mysql> select * from user where user!='root';  
3、查看年龄大于20岁的用户
mysql> select * from user where user>20;   

  

         NULL: 字段名 is noll

查看名称为null的行
mysql> select * from user where class is null;   

         LIKE:

             %:任意长度的任意字符

              _:任意单个字符

              IN (values,values2):用来指定一个查找范围,可以使任意一个数值,一个或的关系。

1、查看以r开头的用户名
mysql> select * from user where user like "r%";
2、查看用户名是root或者gong的用户
mysql>select * from user where user in ('root','gong');
        

          RLIKE:可以配合正则表达式的使用。

                    1、查看user字段中包含‘o’的所有用户名

                    mysql>select * from user where user rlike '.*u.*';

update:更新,修改

update 表名 set 字段=数值 where;my.cnf

1、更改用户名为tom的年龄为20岁

mysql> update student set age=20 where name='tom';

delete:清空表内数据

1、清空student表

delete from student

2、删除用户名为tom的用户

delete from student where name=‘tom’;



本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1968773,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
SQL 算法 关系型数据库
温故知新-数据库篇
温故知新-数据库篇
23 0
|
1月前
|
数据采集 JSON 小程序
GitHub 开源数据库 chinese-poetry,最全中文诗歌古典文集数据库
GitHub 开源数据库 chinese-poetry,最全中文诗歌古典文集数据库
|
9月前
|
存储 数据采集 JSON
【每周一坑】数据库 +【解答】自动翻译
虽然目前这段小代码并不非要用数据库,但对于功能复杂、数据庞大应用来说,数据库是很有必要的。之后我们这个工具还要做更多扩展,数据库会便于读写数据,所以我们不妨现在就做好准备。
|
6月前
|
存储 关系型数据库 MySQL
踏入MySQL世界:从零开始的数据库入门指南
踏入MySQL世界:从零开始的数据库入门指南
55 0
|
9月前
|
Oracle 关系型数据库 数据库
2013-12-19 无奈的数据库 随笔说说
2013-12-19 无奈的数据库 随笔说说
2013-12-19 无奈的数据库 随笔说说
|
9月前
|
存储 SQL Linux
【每周一坑】疯狂的小母牛 +【解答】数据库
这道题,如果你网上搜一下,会有很多地方用各种语言写过。一般来说是迭代(循环)和递归两种解法。不过我当年看到这道题的时候,就觉得这个很适合用面向对象的思想来实现,因为母牛就是一种类型,每头母牛都是这个类型的一个实例。这个思路你也可以考虑下。
|
10月前
|
数据库连接 定位技术 数据库
【C++项目实现】推箱子(含数据库实现)
【C++项目实现】推箱子(含数据库实现)
69 0
|
10月前
|
SQL 数据可视化 数据库
<数据库视图>--数据库的“眼镜”(世界杯例题篇),查阅必备
<数据库视图>--数据库的“眼镜”(世界杯例题篇),查阅必备
89 0
|
11月前
|
SQL 存储 Oracle
【MySQL新手到通关】第一章 数据库概述
【MySQL新手到通关】第一章 数据库概述

热门文章

最新文章