一、修改密码的三种方式:
1、#mysqladmin -u USERNAME -h HOSTNAME -p password ‘new_password’ (输入旧密码设置新密码)
-u (--user)
-p (--password)
-h (--host)
例:#mysqladmin -u root -h localhost -p password ‘redhat’
2、>SET PASSWORD FOR ‘USERNAME’@’HOST’=PASSWORD(‘new_password’);
例:>SET PASSWORD FOR ‘root’@’localhost’=PASSWORD(‘redhat’);
3、>UPDATE mysql.user SET PASSWORD=PASSWORD(‘redhat’) WHERE User=’USERNAME’;
例:>UPDATE mysql.user SET PASSWORD=PASSWORD(‘redhat’) WHERE User=’root’;
二、prompt提示符:
mysql> (Ready for new statement)
---> (Waiting for next line of statement)
‘> (Waiting for end of single-quoted string)仅一个单引号
“> (Waiting for end of double-quoted string)
`> (Waiting for end of backtick-quoted identifier)反引号
/*> (Waiting for end of c-style comment)C语言注释信息
三、mysql命令两类:
》client-side命令;
》server-side语句(有语句结束符,默认是分号)
1、client-side命令(交互式模式和批处理模式):
注:批处理模式就是直接处理已编辑好的*.sql文件(例:>\. init.sql或#mysql < test.sql也可用来直接恢复)
>\? (查看client-side所有命令)
>\c (语句不再执行,提前终止(前提不要加语句结束符,例如分号))
>\d 后接要定义的结束符 (定义语句结束符)
>\r (重新连接至服务器上)
>\g (无论语句结束符是什么,直接将此语句送至服务器执行,适用于改了语句结束符但忘记了)
>\G (无论语句结束符是什么,直接将此语句送至服务器执行,并将结果以竖排显示)
>\! COMMAND (在mysql交互模式下执行shell命令)
>\.script (执行脚本或用>source脚本名也可)
>\s (从服务器获取状态信息)
>\u DATABASE_NAME (相当于USE切换数据库)
>\W (语句完成显示警告信息)
>\w (语句完成不显示警告信息)
>\#或>rehash (对于新建的对象启用名称补全功能,要禁用(#mysql -uroot -p -A或编译时--no-auto-rehash、--disable-auto-rehash)
》#mysql -u USERNAME -p -h HOST --port N --protocol tcp -D DATABASE
--port (例:3306)
--protocol [tcp|socket|pipe|memory] (注:同一主机间通过mysql.socket通信,pipe/memory在win下使用)
-D(--database) 后接数据库名 (登陆时使用指定的数据库)
》#mysql -H(--html) (表格式的显示方式,例:>SELECT User,Host FROM user;将显示内容复制到记事本中,改名为.html,用浏览器打开)
#mysql -X(--xml)
2、server-side命令(mysqladmin/mysqldump/mysqlimport/mysqlcheck):
》>HELP key_word
》#mysqld ---help --verbose
注:mysql的配置文件my.cnf是集中式分段配置的,绝大多数的参数都可在命令行直接执行。
#mysqladmin [options] command [arg] [command [arg]]
例:
#mysqladmin create|drop testdb(创建、删除数据库)
#mysqladmin -uroot -p password ‘new_password’ (更改密码)
#mysqladmin -uroot -p -h IP|host ping (查看某台服务器数据库是否在线)
#mysqladmin processlist (查看正在执行的进程列表)
#mysqladmin status --sleep 2 --count 2 (显示服务器状态,每隔两秒共显示两条)
#mysqladmin extended-status (显示状态变量,监控mysqlserver的重要手段)
#mysqladmin variables (显示服务器变量)
#mysqladmin flush-pvrivileges|reload (重读授权表)
#mysqladmin flush-tables (关闭当前打开的文件句柄)
#mysqladmin flush-threads (重置线程缓存)
#mysqladmin status (重置大多数的服务器状态变量)
#mysqladmin refresh (相当于flush-logs和flush-hosts一起重置,滚动二进制日志、中继日志,清除主机内部信息(例如:可以允许多次登录未登上的用户再次尝试登陆)
#mysqladmin shutdown (关闭mysqlserver进程)
#mysqladmin version (服务器版本号及状态信息)
#mysqladmin start-slave (启动从服务器的复制线程(SQL thread和IO thread))
四、数据类型:
1、numeric data types:
精确数值型:TINYINT(1byte)/SMALLINT(2)/MEDIUMINT(3)/INT(4)/BIGINT(8)/DECIMAL/BIT
近似数值型(浮点型):FLOAT(单精度)/DOUBLE(双精度)
注:FLOAT(g,f),g表示整体位,f表示小数点后位数,例如:1.36表示为FLOAT(3,2);
TINYINT(1)是显示1位数字,与具体的存储数值无关。
2、string data types:
CHAR(定长255)/VARCHAR(变长65535)——不区分大小写
BINARY(定长255)/VARBINARY(变长65535)——区分大小写
TINYBLOB(255)/BLOB(64K)/MEDIUMBLOB(16M)/LONGBLOB(4G)(Binary Large OBject)——区分大小写
TINYTEXT(255)/TEXT(65535)/MEDIUMTEST(16777215)/LONGTEXT(4294967295)——不区分大小写
ENUM(65535)枚举(enumeration)
SET(1-64string)集合
注: VARCHAR长度在255个字符以内则多占1个结束符;若超出255个字符则多占两个结束符,最多可存65535个字符,例如在VARCHAR下存两个字符,则实际上占三个字符位,有一位结束符;
CHAR和TINYTEXT虽都能存255个字符,但CHAR能索引整个字段,TINYTEXT则不行;
只要符合要求,够用就行,越简单越好,以后管理成本越低,不要随意改变数据类型。
3、date and time types:
DATE(3bytes)/TIME(3)/DATETIME(8)/TIMESTAMP(4)/YEAR(1)
4、定义数据类型的目的:
存储什么类型的值(what kind of values it can represent)
占多大空间(how much space values take up)
定长还是变长(fixed-length or variable-length)
mysql如何对其进行比较和排序(compares and sorts)
是否能创建索引(whether the type can be indexed)
5、常用的修饰符:NULL/NOT NULL/DEFAULT/AUTO_INCREMENT/UNSIGNED/PRIMARY KEY/UNIQUE KEY
特有的修饰符:CHARACTER SET(字符集)、COLLATION(排序规则)
>SHOW CHARACTER SET; (查看字符集)
>SHOW COLLATION; (查看排序规则)
使用AUTO_INCREMENT条件:整型、非空、无符号、主键或唯一键
>SELECT LAST_INSERT_ID(); (查看自动增长函数结果)
>SELECt DATABASE(); (查看内置函数)
注:mysql内部有很多存储函数、存储过程,所有函数都可通过SELECT执行
例1:>CREATE TABLE test(
id INT UNSIGNEd AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(20));
例2:RRtype ENUM(‘A’,’PTR’,’CNAME...) (解析记录resource record type:A,PTR,CNAME,AAAA,MX,NS,SOA,SRV)
五、SQL模式(违反数据规则的处理办法):
ANSIQUOTES 双引号相当于反引号,单引号只用来标示字符串(实际上在mysql中单引号、双引号、反引号通用);
INGORE_SPACE 在内建函数中忽略空格;
STRICT_ALL_TABLES 此项没设置时非法数据允许并警告,此项设置时非法数据被拒绝,最严格模式;
STRICT_TRANS_TABLES 向支持事务的表中插入非法数据,不允许并返回错误
TRADITIONAL
>SHOW GLOBAL VARIABLES LIKE ‘sql_mode’; (查看sql_mode默认规则)
>SELECT @@golbal.sql_mode; (用SELECT语句调用服务器变量并查看)
>SELECT @@session.sql_mode;
六、mysql服务器变量:
1、分类:
按作用域分为两类:全局变量、会话变量;
按生效时间分两类:动态、静态;
全局变量:mysql服务启动时全局变量生效,如:/etc/my.cnf,查看方式:
>SHOW GLOBAL VARIABLES; (仅管理员用)
会话变量:client-side连接至server-side,仅此次会话生效,会话关闭不生效,如~/.my.cnf,查看方式:
>SHOW [SESSION] VARIABLES; (用户使用)
动态:可即时调整,即时生效
静态:要写在配置文件中,通过参数传递给进程mysqld
动态调整对全局:对当前会话无效,只对新建会话有效;
动态调整对会话:即时生效,但只对当前会话生效。
2、设置
>SET GLOBAL|SESSION variables_name=’value’;
例:>SET GLOBAL sql_mode=’strict_all_tables’; (仅对新建会话生效)
>SET SESSION sql_mode=’strict_trans_tables’; (仅对当前会话生效,即时生效)