查询
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr ...]
[FROM table_references
[PARTITION partition_list]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name'
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE 'file_name'
| INTO var_name [, var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]
更新
UPDATE `download` SET `status` = '2' WHERE `id` = '2';
UPDATE `download` SET `data` = 'new data data\n', `status` = '1' WHERE `id` = '2';
UPDATE download_a LEFT JOIN download_bON download_a.id=download_b.id SET download_a.title='t1',download_b.content='c1' WHERE download_a.id=1
UPDATE download_a,download_b SET download_a.id=download_b.id WHERE download_a.id=download_b.id;
注释:您不能把ORDER BY或LIMIT与multiple-table UPDATE同时使用。您不能在一个子查询中更新一个表,同时从同一个表中选择。
删除
普通单表删除
DELETE FROM `download` WHERE ((`id` ='123'))
从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉(只删除t1中的记录)
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id
或
DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id
从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉(只删除t1中的记录)
DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
或
DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
从两个表中找出相同记录的数据并把两个表中的数据都删除掉(同时删除t1,t2中的记录)
DELETE t1,t2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25
插入
INSERT INTO `data` (`date`, `data`, `import_status`) VALUES ('1', '123', '0');
INSERT INTO Table2(a, c, d) SELECT a,c,5 FROM Table1
SELECT a,c INTO Table2 FROM Table1
SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE City='Beijing
SELECT Persons.LastName,Orders.OrderNo INTO Persons_Order_Backup FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P
查看创建表语句
SHOW CREATE TABLE `table_test`;
查看表基本信息
SHOW TABLE STATUS LIKE 'test_table';
查看表索引信息
SHOW INDEX FROM `table_test`;
显示表字段信息
DESC music_album
SHOW COLUMNS FROM `music_album`;
显示当前数据库的表列表
SHOW TABLES
显示指定数据库的表列表
SHOW TABLES FROM `db_test`;
SHOW VARIABLES LIKE 'collation_database';
SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES;
SELECT @@global.max_allowed_packet;
查看支持的字符集和校对规则
SELECT * FROM `information_schema`.`collations` ORDER BY `collation_name` ASC;
查看支持的引擎
SHOW TABLES IN information_schema LIKE 'ENGINES';
SELECT Engine, Support FROM `information_schema`.`engines` WHERE SUPPORT IN ('DEFAULT', 'YES');
InnoDB MyISAM
设置输入输出环境编码
SET NAMES 'utf8mb4';
数据库操作
CREATE DATABASE `db_test` DEFAULT CHARACTER SET `utf8`;
CREATE DATABASE `test_db`;
DROP DATABASE `test_db`;
数据库重命名
CREATE DATABASE `a_new`;
RENAME TABLE `a`.`b` TO `a_new`.`b`;
DROP DATABASE `a`;
表操作
CREATE TABLE `test_table` (
id INT(11) UNSIGNED NOT NULL
PRIMARY KEY AUTO_INCREMENT
) DEFAULT CHARACTER SET `utf8` ENGINE = `InnoDB`;
ALTER TABLE `a` COMMENT = '备注';
RENAME TABLE `test_table` TO `table_test`;
TRUNCATE TABLE `table_test`;
DROP TABLE `table_test`;
修改字符集和引擎
ALTER TABLE `table_test` CHARACTER SET = utf8mb4;
ALTER TABLE `table_test` ENGINE = MyISAM;
ALTER TABLE `table_test` ENGINE = InnoDB;
ALTER TABLE `table_test` CHARACTER SET = utf8;
ALTER TABLE `table_test` COLLATE = utf8_estonian_ci;
ALTER TABLE `table_test` COLLATE = utf8_general_ci;
加索引
ALTER TABLE `download` ADD PRIMARY KEY (`id`);
ALTER TABLE `table_test` ADD UNIQUE INDEX (`email`);
ALTER TABLE `table_test` ADD INDEX (`name`);
ALTER TABLE `table_test` ADD INDEX (`name`, `nickname`);
ALTER TABLE `download` ADD INDEX (`date`, `import_status`);
ALTER TABLE `download` ADD INDEX `new_name` (`date`, `import_status`);
ALTER TABLE `download` ADD INDEX `index1` (`index_name` (20)) KEY_BLOCK_SIZE = 21;
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[index_type]
ON tbl_name (index_col_name,...)
[index_option]
[algorithm_option | lock_option] ...
index_col_name:
col_name [(length)] [ASC | DESC]
index_type:
USING {BTREE | HASH}
index_option:
KEY_BLOCK_SIZE [=] value
| index_type
| WITH PARSER parser_name
| COMMENT 'string'
algorithm_option:
ALGORITHM [=] {DEFAULT|INPLACE|COPY}
lock_option:
LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}
CREATE INDEX is mapped to an ALTER TABLE statement to create indexes.
See ALTER TABLE. CREATE INDEX cannot be used to create a PRIMARY KEY; use ALTER TABLE instead.
删除索引
ALTER TABLE `download` DROP PRIMARY KEY;
ALTER TABLE `download` DROP INDEX `new_name`;
重置自增id
ALTER TABLE `table_test` AUTO_INCREMENT = 1;
修改表字读
ALTER TABLE `table_test` ADD `name` VARCHAR(20) NOT NULL DEFAULT '' COMMENT '名称' AFTER `id`;
ALTER TABLE `table_test` ADD `email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '邮箱' AFTER `name`;
ALTER TABLE `table_test` ADD `nickname` VARCHAR(100) NULL DEFAULT NULL COMMENT '昵称' AFTER `email`;
ALTER TABLE `table_test` ADD `create_time` INT NOT NULL DEFAULT '0' COMMENT '时间' AFTER `nickname`;
ALTER TABLE `table_test` ADD `balance` DECIMAL(10,2) NOT NULL DEFAULT '0' COMMENT '余额' AFTER `create_time`;
ALTER TABLE `table_test` ADD `balance` DECIMAL(10,2) NOT NULL DEFAULT '0' COMMENT '余额' AFTER `create_time`;
ALTER TABLE `table_test` ADD `description` LONGTEXT NOT NULL COMMENT '描述' AFTER `balance`;
ALTER TABLE `table_test` DROP `id`;
ALTER TABLE `table_test` ADD `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY AFTER `description`;
ALTER TABLE `table_test` MODIFY COLUMN `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT FIRST;
ALTER TABLE `table_test` MODIFY COLUMN `create_time` INT(11) NOT NULL DEFAULT '0' COMMENT '时间' AFTER `description`;
ALTER TABLE `table_test` DROP `description`;
ALTER TABLE `table_test` CHANGE `create_time` `create_time_renmae` INT(11) NOT NULL DEFAULT '0' COMMENT '时间';
ALTER TABLE `table_test` CHANGE `create_time_renmae` `create_time_renmae` BIGINT(11) NOT NULL DEFAULT '0' COMMENT '时间';
ALTER TABLE `table_test` CHANGE `create_time_renmae` `create_time_renmae` BIGINT(11) NOT NULL DEFAULT '0' COMMENT '时间描述';
ALTER TABLE `table_test` CHANGE `create_time_renmae` `create_time_renmae` BIGINT(20) NOT NULL DEFAULT '0' COMMENT '时间描述';
ALTER TABLE `table_test` CHANGE `create_time_renmae` `create_time_renmae` BIGINT(20) NULL DEFAULT '1' COMMENT '时间描述';
ALTER TABLE `table_test` CHANGE `create_time_renmae` `create_time_renmae` BIGINT(20) NOT NULL DEFAULT '1' COMMENT '时间描述';
ALTER TABLE `table_test` CHANGE `create_time_renmae` `create_time_renmae` BIGINT(20) NOT NULL DEFAULT '0' COMMENT '时间描述';
ALTER TABLE `table_test` CHANGE `create_time_renmae` `create_time_renmae` INT(20) NOT NULL DEFAULT '0' COMMENT '时间描述';
ALTER TABLE `table_test` CHANGE `create_time_renmae` `create_time_renmae` INT(11) NOT NULL DEFAULT '0' COMMENT '时间描述';
ALTER TABLE `table_test` CHANGE `create_time_renmae` `create_time` INT(11) NOT NULL DEFAULT '0' COMMENT '时间描述';
ALTER TABLE `table_test` DROP `nickname`;
ALTER TABLE `a` ADD `create_time` DATETIME NOT NULL ON UPDATE CURRENT_TIMESTAMP AFTER `name`;
ALTER TABLE `a` CHANGE `create_time` `create_time` DATE NOT NULL;
ALTER TABLE `a` CHANGE `create_time` `create_time` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP;
CHECK TABLE `details`;
REPAIR TABLE `details`;
ANALYZE TABLE `details`;
OPTIMIZE TABLE `details`;
FLUSH TABLE `details`;
CHECKSUM TABLE `details`;
CREATE USER 'user_test'@'localhost' IDENTIFIED BY '123456';
SET PASSWORD FOR 'user_test'@'localhost' = PASSWORD('123456');
CREATE USER 'user_test'@'s' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
DROP USER 'user_test'@'localhost';
DROP USER 'user_test'@'b', 'user_test'@'s';
FLUSH PRIVILEGES;
资源控制列 user表的4个资源控制列是:
REPAIR TABLE `details`;
ANALYZE TABLE `details`;
OPTIMIZE TABLE `details`;
FLUSH TABLE `details`;
CHECKSUM TABLE `details`;
CREATE USER 'user_test'@'localhost' IDENTIFIED BY '123456';
SET PASSWORD FOR 'user_test'@'localhost' = PASSWORD('123456');
CREATE USER 'user_test'@'s' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
DROP USER 'user_test'@'localhost';
DROP USER 'user_test'@'b', 'user_test'@'s';
FLUSH PRIVILEGES;
资源控制列 user表的4个资源控制列是:
max_questions:每小时可以允许执行多少次查询;
max_updates:每小时可以允许执行多少次更新;
max_connections:每小时可以建立多少连接;
max_user_connections:单个用户可以同时具有的连接数。默认值为0,表示无限制。
UPDATE mysql.user SET max_questions = 0, max_updates = 0, max_connections = 0 WHERE User = 'user_test' AND Host = 'localhost';
权限
CREATE ROUTINE, CREATE VIEW, CREATE USER, ALTER, SHOW VIEW, CREATE, ALTER ROUTINE, EVENT, SUPER, INSERT, RELOAD, SELECT, DELETE, FILE, SHOW DATABASES, TRIGGER, SHUTDOWN, REPLICATION CLIENT, GRANT OPTION, PROCESS, REFERENCES, UPDATE, DROP, REPLICATION SLAVE, EXECUTE, LOCK TABLES, CREATE TEMPORARY TABLES, INDEX
授权
GRANT ALL ON *.* TO 'user_test'@'localhost';
GRANT SHOW VIEW, INSERT, SELECT, PROCESS ON *.* TO 'user_test'@'localhost';
REVOKE ALL ON *.* FROM 'user_test'@'localhost';
GRANT SELECT ON *.* TO 'user_test'@'localhost';
降权
REVOKE ALL ON *.* FROM 'user_test'@'localhost';
REVOKE ALTER ON *.* FROM 'user_test'@'s';
授权对象
*.*全部
test.* test数据库
host的值
一个localhost,一个127.0.0.1,一个::1,其实这三个都是一个意思,都是表示本地机。::1 是ipv6地址127.0.0.1的缩写,也就是本机
Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。
而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。
这也就是为什么在开启远程连接的时候,大部分人都直接把Host改成%的缘故,为了省事。
%表示所有ip
192.168.1.2 特定IP
新建用户并授权
CREATE USER 'user_test'@'%' IDENTIFIED BY '123';
UPDATE mysql.user SET max_questions = 0, max_updates = 0, max_connections = 0 WHERE User = 'user_test' AND Host = '%';
GRANT ALL ON *.* TO 'user_test'@'%' WITH GRANT OPTION;
SELECT USER, HOST FROM mysql.db WHERE USER = 'user_test' AND HOST = '%' AND DB = 'db_test';
GRANT CREATE ROUTINE, CREATE VIEW, ALTER, SHOW VIEW, CREATE, ALTER ROUTINE, EVENT, INSERT, SELECT, DELETE, TRIGGER, GRANT OPTION, REFERENCES, UPDATE, DROP, EXECUTE, LOCK TABLES, CREATE TEMPORARY TABLES, INDEX ON `db_test`.* TO 'user_test'@'%';
修改访问权限
RENAME USER 'root'@'localhost' TO 'root'@'%';
UPDATE mysql.user SET max_questions = 0, max_updates = 0, max_connections = 0 WHERE User = 'root' AND Host = '%';
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
删除用户
DROP USER 'bjpex'@'%';
SHOW FULL PROCESSLIST;
SHOW PROCESSLIST;
id,标识,主要用于kill语句
user,显示当前用户,如果不是root,这 个命令就只显示你权限范围内的sql语句
host,显示这个语句是从哪个ip的哪个端口上发出的
db,显示这个进程目前连接的是哪个数据库
command,显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接 (connect)
time,此这个状态持续的时间,单位是秒。
state,显示使用当前连接的sql语句的状态,重要,state只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成
info,显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。
state说明:
Checking table
正在检查数据表(这是自动的)
Closing tables
正在将表中修改的数据刷新到磁盘中,同时正在关闭已经用完的表。这是一个很快的操作,如果不是这样的话,就应该确认磁盘空间是否已经满了或者磁盘是否正处于重负中
Connect Out
复制从服务器正在连接主服务器
Copying to tmp table on disk
由于临时结果集大于 tmp_table_size,正在将临时表从内存存储转为磁盘存储以此节省内存
Creating tmp table
正在创建临时表以存放部分查询结果
deleting from main table
服务器正在执行多表删除中的第一部分,刚删除第一个表
deleting from reference tables
服务器正在执行多表删除中的第二部分,正在删除其他表的记录
Flushing tables
正在执行 FLUSH TABLES,等待其他线程关闭数据表
Killed
发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQL会在每次的主循环中检查kill标志 位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效
Locked
被其他查询锁住了
Sending data
正在处理 SELECT 查询的记录,同时正在把结果发送给客户端
Sorting for group
正在为 GROUP BY 做排序
Sorting for order
正在为 ORDER BY 做排序
Opening tables
正尝试打开一个表,这个过程应该会很快,除非受到其他因素的干扰。例如,在执行ALTER TABLE 或 LOCK TABLE 语句行完以前,数据表无法被其他线程打开。
Removing duplicates
正在执行一个 SELECT DISTINCT 方式的查询,但是MySQL无法在前一个阶段优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端
Reopen table
获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁,关闭数据表,正尝试重新打开数据表
Repair by sorting
修复指令正在排序以创建索引
Repair with keycache
修复指令正在利用索引缓存一个一个地创建新索引。它会比 Repair by sorting 慢些
Searching rows for update
正在讲符合条件的记录找出来以备更新。它必须在 UPDATE 要修改相关的记录之前就完成了
Sleeping
正在等待客户端发送新请求
System lock
正在等待取得一个外部的系统锁。如果当前没有运行多个 mysqld 服务器同时请求同一个表,那么可以通过增加 --skip-external-locking参数来禁止外部系统锁
Upgrading lock
INSERT DELAYED 正在尝试取得一个锁表以插入新记录
Updating
正在搜索匹配的记录,并且修改它们
User Lock
正在等待 GET_LOCK()
Waiting for tables
该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能的重新打开数据表,必须等到所有其他线程关闭这个表。以下几种情况下会产生这个通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, 或 OPTIMIZE TABLE
waiting for handler insert
INSERT DELAYED 已经处理完了所有待处理的插入操作,正在等待新的请求。
大部分状态对应很快的操作,只要有一个线程保持同一个状态好几秒钟,那么可能是有问题发生了,需要检查一下
http://www.cszhi.com/20120406/mysql-processlist.html
正在执行 FLUSH TABLES,等待其他线程关闭数据表
Killed
发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。MySQL会在每次的主循环中检查kill标志 位,不过有些情况下该线程可能会过一小段才能死掉。如果该线程程被其他线程锁住了,那么kill请求会在锁释放时马上生效
Locked
被其他查询锁住了
Sending data
正在处理 SELECT 查询的记录,同时正在把结果发送给客户端
Sorting for group
正在为 GROUP BY 做排序
Sorting for order
正在为 ORDER BY 做排序
Opening tables
正尝试打开一个表,这个过程应该会很快,除非受到其他因素的干扰。例如,在执行ALTER TABLE 或 LOCK TABLE 语句行完以前,数据表无法被其他线程打开。
Removing duplicates
正在执行一个 SELECT DISTINCT 方式的查询,但是MySQL无法在前一个阶段优化掉那些重复的记录。因此,MySQL需要再次去掉重复的记录,然后再把结果发送给客户端
Reopen table
获得了对一个表的锁,但是必须在表结构修改之后才能获得这个锁。已经释放锁,关闭数据表,正尝试重新打开数据表
Repair by sorting
修复指令正在排序以创建索引
Repair with keycache
修复指令正在利用索引缓存一个一个地创建新索引。它会比 Repair by sorting 慢些
Searching rows for update
正在讲符合条件的记录找出来以备更新。它必须在 UPDATE 要修改相关的记录之前就完成了
Sleeping
正在等待客户端发送新请求
System lock
正在等待取得一个外部的系统锁。如果当前没有运行多个 mysqld 服务器同时请求同一个表,那么可以通过增加 --skip-external-locking参数来禁止外部系统锁
Upgrading lock
INSERT DELAYED 正在尝试取得一个锁表以插入新记录
Updating
正在搜索匹配的记录,并且修改它们
User Lock
正在等待 GET_LOCK()
Waiting for tables
该线程得到通知,数据表结构已经被修改了,需要重新打开数据表以取得新的结构。然后,为了能的重新打开数据表,必须等到所有其他线程关闭这个表。以下几种情况下会产生这个通知:FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE, 或 OPTIMIZE TABLE
waiting for handler insert
INSERT DELAYED 已经处理完了所有待处理的插入操作,正在等待新的请求。
大部分状态对应很快的操作,只要有一个线程保持同一个状态好几秒钟,那么可能是有问题发生了,需要检查一下
http://www.cszhi.com/20120406/mysql-processlist.html
mysql> SELECT UNIX_TIMESTAMP();
-> 1196440210
mysql> SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');
-> 1196440219
mysql> SELECT FROM_UNIXTIME(1196440219);
-> '2007-11-30 10:30:19'
mysql> SELECT FROM_UNIXTIME(1196440219) + 0;
-> 20071130103019.000000
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),
-> '%Y %D %M %h:%i:%s %x');
-> '2007-11-30 10:30:19'
mysql> SELECT FROM_UNIXTIME(1196440219) + 0;
-> 20071130103019.000000
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),
-> '%Y %D %M %h:%i:%s %x');
-> '2007 30th November 10:30:59 2007'
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y-%m-%d %H:%i:%s');
Specifier | Description |
---|---|
%a | Abbreviated weekday name (Sun ..Sat ) |
%b | Abbreviated month name (Jan ..Dec ) |
%c | Month, numeric (0 ..12 ) |
%D | Day of the month with English suffix (0th , 1st , 2nd , 3rd , …) |
%d | Day of the month, numeric (00 ..31 ) |
%e | Day of the month, numeric (0 ..31 ) |
%f | Microseconds (000000 ..999999 ) |
%H | Hour (00 ..23 ) |
%h | Hour (01 ..12 ) |
%I | Hour (01 ..12 ) |
%i | Minutes, numeric (00 ..59 ) |
%j | Day of year (001 ..366 ) |
%k | Hour (0 ..23 ) |
%l | Hour (1 ..12 ) |
%M | Month name (January ..December ) |
%m | Month, numeric (00 ..12 ) |
%p | AM or PM |
%r | Time, 12-hour (hh:mm:ss followed by AM or PM ) |
%S | Seconds (00 ..59 ) |
%s | Seconds (00 ..59 ) |
%T | Time, 24-hour (hh:mm:ss ) |
%U | Week (00 ..53 ), where Sunday is the first day of the week; WEEK() mode 0 |
%u | Week (00 ..53 ), where Monday is the first day of the week; WEEK() mode 1 |
%V | Week (01 ..53 ), where Sunday is the first day of the week; WEEK() mode 2; used with %X |
%v | Week (01 ..53 ), where Monday is the first day of the week; WEEK() mode 3; used with %x |
%W | Weekday name (Sunday ..Saturday ) |
%w | Day of the week (0 =Sunday..6 =Saturday) |
%X | Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V |
%x | Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v |
%Y | Year, numeric, four digits |
%y | Year, numeric (two digits) |
%% | A literal “% ” character |
% | x , for any “x ” not listed above |
数值操作
字符串操作
控制语句
更多
方法1: 用SET PASSWORD命令
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
mysqladmin -u root password "newpass"
如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
方法3: 用UPDATE直接编辑user表
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
在丢失root密码的时候,可以这样
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
导出数据库
mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
mysqladmin -u root password "newpass"
如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass "newpass"
方法3: 用UPDATE直接编辑user表
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
在丢失root密码的时候,可以这样
mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHERE user='root';
mysql> FLUSH PRIVILEGES;
导出数据库
mysqldump -h localhost -u root -p dbname > dbnamebackup.sql
导出指定表结构
mysqldump --compact --extended-insert=false --complete-insert=true -h localhost -u root -p db1 db2 > dbbackup.sql
导出指定表数据
mysqldump --tables -h localhost -u root -p db1 db2 >dbbackup.sql