mysql更改密码
1.使用SETPASSWORD命令
步骤1):输入命令mysql-uroot-p指定root用户登录MySQL,然后回车输入密码。如果没有配置环境变量,请登录MySQLbin目录。
Step2):使用SETPASSWORD修改密码命令格式为setpasswordforusername@localhost=password(newpwd);
,其中username是要修改密码的用户名,newpwd是要修改的新密码。如图所示。
步骤3):输入退出;命令退出MySQL并再次登录,输入新密码“root”登录;
2.使用mysqladmin修改密码
使用mysqladmin命令修改MySQLroot用户密码格式为mysqladmin-uusername-poldpasswordpasswordnewpassword。
注意:-uroot和-proot是下图中修改密码的命令的全部。不要写成-uroot-proot。-u和root之间可以加空格,但是会出现警告,所以不要加空格。
3.UPDATE直接编辑用户表
步骤1):输入命令mysql-uroot-p指定root用户登录MySQL,然后回车输入密码。如果没有配置环境变量,请登录MySQLbin目录。
步骤2):输入使用mysql;命令连接到权限数据库。
第三步):输入命令updatemysql.usersetauthentication_string=password(‘newpassword’)whereuser=’username’andHost=’localhost’;设置新密码。
Step4):输入flush权限;命令刷新权限。
Step5):输入退出;命令退出MySQL并再次登录。此时密码已更改为刚刚输入的新密码。
mysql存储文件用什么类型
1.列式存储要求
MySQL支持的每种列类型的存储要求按类别列出。
MyISAM表中行的最大大小为65,534字节。每个BLOB和TEXT列帐户只占用5到9个字节。
如果MyISAM表包含可变长度列类型,则记录格式也是可变长度的。在创建表时,在某些条件下,MySQL可以将列从可变长度类型更改为固定长度类型,反之亦然。
数字存储要求
列类型存储要求
TINYINT1字节
SMALLINT2个字节
MEDIUMINT3个字节
INT,INTEGER4个字节
BIGINT8字节
FLOAT(p)如果0<=p<=24则为4个字节,如果25<=p<=53则为8个字节
浮点数4字节
DOUBLE[PRECISION],项目REAL8个字节
DECIMAL(M,D),NUMERIC(M,D)可变长度;见下面的讨论
BIT(M)约(M+7)/8字节
DECIMAL(和NUMERIC)的存储要求是特定于版本的:
使用二进制格式将9个十进制(基于10)的数字压缩为4个字节,以表示DECIMAL列值。每个值的整数部分和小数部分的存储分别确定。每个9位的倍数需要4个字节,“剩余”位需要4个字节的一部分。下表给出了超出位数的存储要求:
剩余字节
位数
00
11
二十一
32
42
53
63
74
84
94
数字类型
对于数字类型列,如果要存储的数字是整数(不带小数部分),则使用整数类型;如果要存储的数字是小数(有小数部分),可以选择DECIMAL或浮点类型,但一般选择FLOAT类型(浮点类型的一种)。
例如,如果列值范围是1到99999之间的整数,则MEDIUMINTUNSIGNED类型是最佳选择。
MEDIUMINT是整数类型,UNSIGNED用于无符号数字类型。例如,INT类型的取值范围是-2147483648~2147483647,那么INTUNSIGNED类型的取值范围是0~4294967295。
如果需要存储一些整数值,值的范围决定了可以使用的数据类型。如果取值范围为0~1000,则可以选择SMALLINT~BIGINT之间的任意类型。如果取值范围超过200万,则不能使用SMALLINT,可以选择的类型为MEDIUMINT到BIGINT之一。
当然,完全可以为要存储的值选择最大的“最大”数据类型。但是,如果选择正确的数据类型,不仅可以使表的存储空间更小,还可以提高性能。因为较短的列比较长的列处理得更快。读取较短的值时,需要较少的磁盘读写,可以将更多的键值放入内存索引缓冲区。
如果您不知道可能值的范围,则只能猜测,或者在最坏的情况下使用BIGINT。如果猜测的类型太小,那么它也不是没有希望的。将来,也可以使用ALTERTABLE使列更大。
如果数值类型需要将数据存储为货币,比如人民币。计算时,所使用的值往往分为两部分。它们看起来像浮点值,但FLOAT和DOUBLE类型都存在舍入误差,因此不太适合。因为人们对他们的钱很敏感,所以需要一种提供完美精确度的数据类型。
货币可以表示为DECIMAL(M,2),其中M是所需值范围的最大宽度。这种类型的值可以精确到小数点后2位。DECIMAL的优点是没有舍入误差并且计算精确。
非数字字符用于电话号码、信用卡号码和社会保险号码。因为空格和破折号不能直接存储到数字列中,除非删除非数字字符。但是即使去掉了非数字字符,也不能将它们存储为数字类型,以免丢失前导“零”。
日期和时间类型
MySQL为不同类型的日期和时间提供数据类型,例如YEAR和TIME。如果只需要记录年份,可以使用YEAR类型;如果只需要记录时间,可以使用TIME类型。
如果需要同时记录日期和时间,可以使用TIMESTAMP或DATETIME类型。由于TIMESTAMP列的取值范围小于DATETIME的取值范围,因此最好使用DATETIME存储较大的日期。
TIMESTAMP还有一个DATETIME没有的属性。默认情况下,当插入一条记录而不指定TIMESTAMP列值时,MySQL会将TIMESTAMP列设置为当前时间。所以在需要插入记录和当前时间的时候使用TIMESTAMP很方便,而且TIMESTAMP比DATETIME更节省空间。
MySQL不提供时间部分是可选的日期类型。DATE没有时间部分,DATETIME必须有时间部分。如果时间部分是可选的,可以使用DATE列来记录日期,并且可以使用单独的TIME列来记录时间。然后,将TIME列设置为NULL。SQL语句如下:
创建表mytb1(
dateDATENOTNULL,#date是必需的
timeTIMENULL#时间可选(可以为NULL)
);
字符串类型
字符串类型不像数字列那样具有“值范围”,但它们都有长度的概念。如果需要存储少于256个字符的字符串,可以使用CHAR、VARCHAR或TINYTEXT。如果需要存储更长的字符串,可以使用VARCHAR或其中一种更长的TEXT类型。
如果字符串列用于表示一组固定值,请考虑使用数据类型ENUM或SET。
CHAR和VARCHAR之间的特性和选择
CHAR和VARCHAR的区别如下:
CHAR是一个固定长度的字符,而VARCHAR是一个可变长度的字符。
CHAR会自动从插入的数据中删除尾随空格,VARCHAR不会删除尾随空格。
CHAR是定长的,所以它的处理速度比VARCHAR快,但是它的缺点是浪费存储空间。所以存储量不大,但是如果对速度有要求的话可以使用CHAR类型,也可以使用VARCHAR类型。
存储引擎对CHAR和VARCHAR选择的影响:
对于MyISAM存储引擎,最好使用固定长度的数据列,而不是可变长度的数据列。这使得整个表是静态的,使数据检索更快,以空间换时间。
对于InnoDB存储引擎来说,最好使用变长数据列,因为InnoDB数据表的存储格式不区分定长和变长,所以使用CHAR不一定比使用VARCHAR好,而是因为VARCHAR是根据实际长度存储,节省空间,因此更适合磁盘I/O和总数据存储。
枚举和设置
ENUM只能取单个值,它的数据列表是一个枚举集。其合法价值列表允许多达65,535名成员。因此,当需要从多个值中进行选择时,可以使用ENUM。例如,gender字段适合定义,它是ENUM类型,一次只能取’male’或’female’中的一个值。
SET可以取多个值。其合法价值列表最多允许64个成员。空字符串也是有效的SET值。当需要取多个值时,适合使用SET类型。例如,要存储一个人的爱好,最好使用SET类型。
ENUM和SET值以字符串的形式出现,但在内部,MySQL将它们存储为数字。
二进制类型
BLOB是二进制字符串,TEXT是非二进制字符串,两者都可以存储大容量信息。BLOB主要存储图片、音频信息等,而TEXT只能存储纯文本文件。
评论前必须登录!
注册