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-255smallinit:2byte,mediuminit:3byteinit:4bytebiginit:8byte1.2.2近似数值型1.2.3浮点型floatdoublereal
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
三、创建和维护数据库
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'\G2、查找用户名不是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;
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,如需转载请自行联系原作者