mysql日常操作指令
1 )mysql管理员密码的更改,mysql安装完毕后,管理员root的密码默认为空,需要进行修改
格式 :mysqladmin -u root password '新密码'
示例 :
[root@mylinux ~]# mysqladmin -u root password '123456' [root@mylinux ~]# mysql -u root -p # 这时候就需要使用密码登陆mysql Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.40-log MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
2 )已设置mysql管理员密码,需要进行更改
格式 :mysqadmin -u root -p password 新密码
示例 :
[root@mylinux ~]# mysqladmin -u root -p password '654321' # 输入之前的管理员密码 Enter password: # 再次登陆mysql,使用的密码就是新密码‘654321’
3 )忘记管理员密码,需要重新设置密码
步骤 :
(1)在mysql的配置文件my.cnf中的[mysqld]下面添加skip-grant,重启mysql服务
(2)登陆mysql,使用用户更改命令
(3)去除my.cnf中skip-grant,重启mysql服务
(4)再登陆mysql,就是用更改的新密码
需要用到的命令格式 :
(1)选择数据库 :use 数据库名;
(2)更改用户的命令 :update user set password=password(新密码) where user=用户名;
(3)刷新数据表,重新加载授权表 :flush privileges;
示例 :
mysql> update user set password=password('123456') where user='root'; # 提示没有选择数据库 ERROR 1046 (3D000): No database selected # 选择mysql数据库 mysql> use mysql; Database changed # 更改root密码 mysql> update user set password=password('123456') where user='root'; Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql>exit Bye # 修改配置文件,去除skip-grant [root@mylinux ~]# vim /etc/my.cnf # 重启mysql服务 [root@mylinux ~]# service mysqld restart Shutting down MySQL. SUCCESS! Starting MySQL. SUCCESS! [root@mylinux ~]#
4 )查询数据库
格式 :show databases;
示例 :
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | discuz | | logs | | mysql | | test | +--------------------+ 5 rows in set (0.00 sec)
5 ) 选择数据库
格式 :use 数据库名;
示例 :
mysql> use test; Database changed
6 ) 创建数据库
格式 :created database 数据库名;
mysql> create database mylinux; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | discuz | | logs | | mylinux | | mysql | | test | +--------------------+ 6 rows in set (0.00 sec)
7 )删除数据库
格式 :drop database 数据库名;
示例 :
mysql> drop database mylinux; Query OK, 0 rows affected (0.11 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | discuz | | logs | | mysql | | test | +--------------------+ 5 rows in set (0.00 sec)
8 )查看数据表
格式 :show tables;
示例 :
mysql> use information_schema; Database changed mysql> show tables; +---------------------------------------+ | Tables_in_information_schema | +---------------------------------------+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES | | ENGINES | ................中间省略................ | SESSION_STATUS | | SESSION_VARIABLES | | STATISTICS | | TABLES | | TABLE_CONSTRAINTS | | TABLE_PRIVILEGES | | TRIGGERS | | USER_PRIVILEGES | | VIEWS | +---------------------------------------+ 28 rows in set (0.01 sec)
9 )查看其中一张表的结构
格式 :describe 表名;
mysql> describe CHARACTER_SETS; +----------------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------------+-------------+------+-----+---------+-------+ | CHARACTER_SET_NAME | varchar(32) | NO | | | | | DEFAULT_COLLATE_NAME | varchar(32) | NO | | | | | DESCRIPTION | varchar(60) | NO | | | | | MAXLEN | bigint(3) | NO | | 0 | | +----------------------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
10 )查看某张表的建表语法
格式 :show create tables 表名;
示例 :
mysql> show create table CHARACTER_SETS; +----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | CHARACTER_SETS | CREATE TEMPORARY TABLE `CHARACTER_SETS` ( `CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '', `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '', `DESCRIPTION` varchar(60) NOT NULL DEFAULT '', `MAXLEN` bigint(3) NOT NULL DEFAULT '0' ) ENGINE=MEMORY DEFAULT CHARSET=utf8 | +----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
也可以在语句后面加上格式化参数“\G”,更好的增加阅读性
示例 :
mysql> show create table CHARACTER_SETS\G; *************************** 1. row *************************** Table: CHARACTER_SETS Create Table: CREATE TEMPORARY TABLE `CHARACTER_SETS` ( `CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '', `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '', `DESCRIPTION` varchar(60) NOT NULL DEFAULT '', `MAXLEN` bigint(3) NOT NULL DEFAULT '0' ) ENGINE=MEMORY DEFAULT CHARSET=utf8 1 row in set (0.00 sec) ERROR: No query specified
11 )创建数据表
格式 :CREATE TEMPORARY TABLE `表名` (
`字段1` 字段类型 [字段选项] 字段约束条件,
`字段2` 字段类型 [字段选项] 字段约束条件,
`字段3` .....
)
[表选项]
[SELECT 语句]
示例 :mysql> create table `test2`( `id` int(3), `thing` varchar(60), `how` bigint(8))engine=myisam default charset=utf8;
12 )更改表结构
格式 :alter table 数据表名 选项 更改的内容;
示例 1 :在test2中在增加一个字段
mysql> describe test2; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(3) | YES | | NULL | | | thing | varchar(60) | YES | | NULL | | | how | bigint(8) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) # 在test2后面在增加一个phone的字段,这里用到了选项add mysql> alter table test2 add phone char(20); Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> describe test2; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(3) | YES | | NULL | | | thing | varchar(60) | YES | | NULL | | | how | bigint(8) | YES | | NULL | | | phone | char(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
示例 2 :修改phone字段的类型
mysql> describe test2; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(3) | YES | | NULL | | | thing | varchar(60) | YES | | NULL | | | how | bigint(8) | YES | | NULL | | | phone | char(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) # 把test2中的phone的类型进行修改,这里用到了选项modify mysql> alter table test2 modify phone varchar(10); Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> describe test2; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(3) | YES | | NULL | | | thing | varchar(60) | YES | | NULL | | | how | bigint(8) | YES | | NULL | | | phone | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
示例 3 :删除一个字段
mysql> describe test2; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(3) | YES | | NULL | | | thing | varchar(60) | YES | | NULL | | | how | bigint(8) | YES | | NULL | | | phone | varchar(10) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) # 删除字段phone,这里用到选项drop mysql> alter table test2 drop phone; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> describe test2; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(3) | YES | | NULL | | | thing | varchar(60) | YES | | NULL | | | how | bigint(8) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec)
示例 4 :更改表的名字
mysql> show tables; +-------------------+ | Tables_in_mylinux | +-------------------+ | test | | test5 | +-------------------+ 2 rows in set (0.00 sec) # 把表5的名字改为表2,这里用到选项rename mysql> alter table test5 rename test2; Query OK, 0 rows affected (0.00 sec) mysql> show tables; +-------------------+ | Tables_in_mylinux | +-------------------+ | test | | test2 | +-------------------+ 2 rows in set (0.00 sec)
13 )复制数据表
格式 :create table 新表名字 like 源表名
示例 :
mysql> show tables; +-------------------+ | Tables_in_mylinux | +-------------------+ | test | | test2 | +-------------------+ 2 rows in set (0.00 sec) mysql> create table test5 like test2; Query OK, 0 rows affected (0.00 sec) mysql> show tables; +-------------------+ | Tables_in_mylinux | +-------------------+ | test | | test2 | | test5 | +-------------------+ 3 rows in set (0.00 sec)
14 )删除数据表
格式 1 :drop table 表名;这个格式命令需要首先选择对应的数据库
格式 2 :drop table 数据库名.表名;这个不需要事先指定数据库
示例 :
mysql> show tables; +-------------------+ | Tables_in_mylinux | +-------------------+ | test | | test2 | | test5 | +-------------------+ 3 rows in set (0.00 sec) mysql> drop table test2; Query OK, 0 rows affected (0.00 sec) mysql> drop table mylinux.test5; Query OK, 0 rows affected (0.00 sec) mysql> show tables; +-------------------+ | Tables_in_mylinux | +-------------------+ | test | +-------------------+ 1 row in set (0.00 sec)
15 ) 清空数据表
格式 :truncate table 表名;
示例 :
mysql> select * from mylinux.test11; +-------+-------+-------------+---------------+--------+ | id | name | phone | e_mail | salary | +-------+-------+-------------+---------------+--------+ | 10086 | lilei | 13800138000 | [email protected] | 3200 | +-------+-------+-------------+---------------+--------+ 1 row in set (0.00 sec) mysql> truncate table mylinux.test11; Query OK, 0 rows affected (0.00 sec) mysql> select * from mylinux.test11; Empty set (0.00 sec)
16 )修复数据表
格式 :repair table 表名;
示例 :
mysql> repair table pre_common_advertisement_custom; +----------------------------------------+--------+----------+----------+ | Table | Op | Msg_type | Msg_text | +----------------------------------------+--------+----------+----------+ | discuz.pre_common_advertisement_custom | repair | status | OK | +----------------------------------------+--------+----------+----------+ 1 row in set (0.07 sec)
17 )查询数据
格式 :select * | 字段列表 from 数据表 where 条件;
1、查询所有字段的数据
示例 :查询表test10中所有字段的数据
mysql> select * from test10; +-------+-----------+-------------+-------------------+--------+ | id | name | phone | e_mail | salary | +-------+-----------+-------------+-------------------+--------+ | 10086 | lilei | 13800138000 | [email protected] | 3200 | | 10087 | hanmeimei | 13986451441 | [email protected] | 3500 | +-------+-----------+-------------+-------------------+--------+ 2 rows in set (0.00 sec)
2、查询某些字段的数据
示例 :查询表test10中的id,name,salary字段的数据
mysql> select id,name,salary from test10; +-------+-----------+--------+ | id | name | salary | +-------+-----------+--------+ | 10086 | lilei | 3200 | | 10087 | hanmeimei | 3500 | +-------+-----------+--------+ 2 rows in set (0.00 sec)
3、查询满足某些条件的数据
示例 :查询表test10中的id,name,salary字段的数据,且salary小于3300的
mysql> select id,name,salary from test10 where salary<3300; +-------+-------+--------+ | id | name | salary | +-------+-------+--------+ | 10086 | lilei | 3200 | +-------+-------+--------+ 1 row in set (0.00 sec)
4、查询数据的总和
示例 :查询表test10中的记录总数
mysql> select count(*) from test10; +----------+ | count(*) | +----------+ | 2 | +----------+ 1 row in set (0.00 sec)
18 )插入数据
格式 1 :insert into 表名(字段1,字段2,...) values (值1,值2,...);
格式 2 :insert into 表名(字段1,字段2,...) select 字段1,字段2,...from 源表;
1、插入一条数据
示例 1 :插入所有字段的值
mysql> select * from test10; +-------+-----------+-------------+-------------------+--------+ | id | name | phone | e_mail | salary | +-------+-----------+-------------+-------------------+--------+ | 10086 | lilei | 13800138000 | [email protected] | 3200 | | 10087 | hanmeimei | 13986451441 | [email protected] | 3500 | +-------+-----------+-------------+-------------------+--------+ 2 rows in set (0.00 sec) mysql> insert into test10 values (10088,'dawei',13325698563,'[email protected]',4000); Query OK, 1 row affected (0.00 sec) mysql> select * from test10; +-------+-----------+-------------+-------------------+--------+ | id | name | phone | e_mail | salary | +-------+-----------+-------------+-------------------+--------+ | 10086 | lilei | 13800138000 | [email protected] | 3200 | | 10087 | hanmeimei | 13986451441 | [email protected] | 3500 | | 10088 | dawei | 13325698563 | [email protected] | 4000 | +-------+-----------+-------------+-------------------+--------+ 3 rows in set (0.00 sec)
示例 2 :插入部分字段的值
mysql> select * from test10; +-------+-----------+-------------+-------------------+--------+ | id | name | phone | e_mail | salary | +-------+-----------+-------------+-------------------+--------+ | 10086 | lilei | 13800138000 | [email protected] | 3200 | | 10087 | hanmeimei | 13986451441 | [email protected] | 3500 | | 10088 | dawei | 13325698563 | [email protected] | 4000 | +-------+-----------+-------------+-------------------+--------+ 3 rows in set (0.00 sec) # 这里声明了表test10要插入的字段为(id,name,phone,salary) mysql> insert into test10 (id,name,phone,salary) values (10089,'lidan',13325698563,4000); Query OK, 1 row affected (0.00 sec) mysql> select * from test10; +-------+-----------+-------------+-------------------+--------+ | id | name | phone | e_mail | salary | +-------+-----------+-------------+-------------------+--------+ | 10086 | lilei | 13800138000 | [email protected] | 3200 | | 10087 | hanmeimei | 13986451441 | [email protected] | 3500 | | 10088 | dawei | 13325698563 | [email protected] | 4000 | | 10089 | lidan | 13325698563 | NULL | 4000 | +-------+-----------+-------------+-------------------+--------+ 4 rows in set (0.00 sec)
2、插入其他表的数据
示例 :
# 创建一个表结构和test10一样的表test11 mysql> create table test11 like test10; Query OK, 0 rows affected (0.00 sec) # 查询表test11的记录为0,即空表 mysql> select count(*) from test11; +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec) # 从表test10中id为10086的记录的所有字段数据插入到表test11中 mysql> insert into test11 select * from test10 where id=10086; Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> select * from test11; +-------+-------+-------------+---------------+--------+ | id | name | phone | e_mail | salary | +-------+-------+-------------+---------------+--------+ | 10086 | lilei | 13800138000 | [email protected] | 3200 | +-------+-------+-------------+---------------+--------+ 1 row in set (0.01 sec)
19 )添加用户并授权
格式 :grant 权限 on 数据库.表名 to 用户名@域名或IP地址 [identified by '密码'] [with grant option];
示例 1 :授权给已存在的用户
将discuz数据库中所有的表的所有的权限授权给用户test
mysql> grant all on discuz.* to test; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
示例 2 :授权的用户不存在
将discuz数据库中所有的表的所有的权限授权给用户test100,并创建用户test100
mysql> grant all on discuz.* to test100@localhost identified by '123456'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
20 )回收权限
格式 :revoke 权限 on 数据库.数据表名 from 用户名@域名或IP地址
示例 :
mysql> revoke all on discuz.* from test100@localhost; Query OK, 0 rows affected (0.00 sec)
21 )查看当前用户
示例 :
mysql> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.00 sec)
22 )查看数据库用户及权限
示例 :
mysql> select host,user,password from mysql.user; +-----------+-------+-------------------------------------------+ | host | user | password | +-----------+-------+-------------------------------------------+ | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | mylinux | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | localhost | | | | mylinux | | | | localhost | zhang | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +-----------+-------+-------------------------------------------+ 6 rows in set (0.00 sec)
23 )添加用户
示例 :添加用户test
mysql> insert into user(host,user,password) values('%','test',password('123456')); Query OK, 1 row affected, 3 warnings (0.00 sec) # 重新加载授权表 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> select host,user,password from user where user='test'; +------+------+-------------------------------------------+ | host | user | password | +------+------+-------------------------------------------+ | % | test | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +------+------+-------------------------------------------+ 1 row in set (0.00 sec)
24 )修改用户密码
示例 :修改用户test的密码
mysql> update user set password=password('654321') where user='test'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
25 )删除用户
示例 :
mysql> delete from user where user='test'; Query OK, 1 row affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
26 )产看当前所在的数据库
示例 :
mysql> select database(); +--------------------+ | database() | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.00 sec)
27 )查看mysql服务器正在运行的线程
示例 :
mysql> show processlist; +----+------+-----------+---------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+---------+---------+------+-------+------------------+ | 19 | root | localhost | mylinux | Query | 0 | NULL | show processlist | +----+------+-----------+---------+---------+------+-------+------------------+ 1 row in set (0.00 sec)
28 )显示mysql服务器的状态信息
示例 :
mysql> show status; +-----------------------------------+----------+ | Variable_name | Value | +-----------------------------------+----------+ | Aborted_clients | 0 | | Aborted_connects | 5 | | Binlog_cache_disk_use | 0 | | Binlog_cache_use | 0 | | Bytes_received | 2520 | ..................中间省略...................... | Threads_cached | 1 | | Threads_connected | 1 | | Threads_created | 2 | | Threads_running | 1 | | Uptime | 29918 | | Uptime_since_flush_status | 29918 | +-----------------------------------+----------+ 268 rows in set (0.01 sec)
29 )检查mysql服务器是否正在运行
示例 :
[root@mylinux ~]# mysqladmin -u root -p ping Enter password: mysqld is alive
30 )mysql备份
格式 1 :mysqldump [options] db_name [tables]
格式 2 :mysqldump [options] --database db_name1 [db_name2 db_name3 ...]
格式 3 :mysqldump [options] --all-databases
示例 1 :导出指定的数据表
[root@mylinux ~]# mysqldump -u root -p123456 mylinux test11 > /backup/test11.dmp
示例 2 :导出多个指定数据库中的所有数据表
[root@mylinux ~]# mysqldump -u root -p123456 --database mylinux > /backup/mylinux.dmp
示例 3 :备份整个数据库
[root@mylinux ~]# mysqldump -u root -p123456 --all-database > /backup/all.dmp
示例 4 :只导出表的结构
[root@mylinux ~]# mysqldump -u root -p123456 --no-data mylinux test11 > /backup/test11_2.dmp
31 )恢复数据
格式 :mysql -uroot -p db_name < /PATH/db_name_dmp
[root@mylinux ~]# mysql -u root -p123456 mylinux < /backup/mylinux.dmp