MySQL 常用基础命令
1.1 Linux下启动mysql 的命令:
- a. rpm包安装:service mysqld start
- b. 源码包安装:/usr/local/mysql/bin/mysqld_safe --user=mysql &
1.2 Linux下重启mysql 的命令:
- a. rpm包安装:service mysqld restart
- b. 源码包安装:
- 先关闭mysql
/usr/local/mysql/bin/mysqladmin -uroot -p shutdown
- 再启动mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql &
1.3 Linux下关闭mysql 的命令:
- a. rpm包安装:service mysqld stop
- b. 源码包安装:
- 方法1、/usr/local/mysql/bin/mysqladmin -uroot -p shutdown
- 方法2、killall mysqld //强行终止MySQL数据库服务,有可能导致表损坏,不建议使用
二、数据库连接
2.1 连接MySQL
格式:$mysql_dir/bin/mysql [-h主机地址] -u用户名 -p用户密码,回车后提示输入密码。
2.2 退出MySQL
格式:exit/quit
三、修改密码
3.1 mysqladmin 命令
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例1:给root加个密码123456。首先在终端下进入目录$mysql_dir/bin,然后键入以下命令
./mysqladmin -uroot password ’123456′
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
例2:再将root的密码改为abc123。
./mysqladmin -uroot -p123456 password abc123
3.2 UPDATE user 语句
首先使用root 帐户登入mysql,然后执行:
UPDATE mysql.user SET password=PASSWORD('123456') WHERE user='root';
FLUSH PRIVILEGES;
3.3 SET PASSWORD 语句
同样,首先使用root 帐户登入mysql,然后执行:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('abc123');
四、创建用户与授权
4.1 CREATE USER
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
CREATE USER用于创建新的MySQL账户。要使用CREATE USER,您必须拥有mysql 数据库的全局CREATE USER权限,或拥有INSERT权限。对于每个账户,CREATE USER会在没有权限的mysql.user表中创建一个新记录。如果账户已经存在,则出现错误。
使用自选的IDENTIFIED BY子句,可以为账户指定一个密码。user值和密码的给定方法和GRANT语句一样。特别要注意的是,要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD。
例1:创建新用户david & sandy
mysql> create user 'david'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec) mysql>
mysql> create user 'sandy'@'localhost' identified by PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19';
Query OK, 0 rows affected (0.00 sec) mysql>
4.2 使用GRANT语句
最好的方法是使用GRANT语句,因为这样更精确,错误少。从MySQL 3.22.11起提供了GRANT;它的主要用途是来给帐户授权的,但也可用来建立新帐户并同时授权。
注意:当mysql 运行于no_auto_create_user 时要提供新建用户的密码,否则不能创建新用户。
格式:
GRANT privileges ON databasename.tablename TO 'username'@'host' identified by 'password';
例1、增加一个用户test1,密码为abc,让他可以在任何主机上登录,并对所有数据库拥有所有权限。
首先用以root用户连入MySQL,然后键入以下命令:
grant all privileges on *.* to 'test1'@'%' identified by 'abc';
flush privileges;
例2、增加一个用户test2,密码为abc,让他只可以在localhost上登录,并可以对数据库david进行查询、插入、修改、删除的操作。
grant select,insert,update,delete on david.* to 'test2'@'localhost' identified by 'abc';
flush privileges;
如果不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on david.* to 'test2'@'localhost' identified by '';
grant 更多用法,请自行Google+Baidu。
4.3 直接操作MySQL授权表
除了GRANT,你可以直接用INSERT语句创建相同的账户,然后使用FLUSH PRIVILEGES告诉服务器重载授权表。
例1:创建用户test3,让其具有同4.2 例2中test2用户同样的权限。
mysql> insert into mysql.user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv) values('localhost', 'test3', PASSWORD('password'),'Y','Y','Y','Y');
Query OK, 1 row affected, 3 warnings (0.00 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec) mysql>
mysql> select Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv from mysql.user where User='test3';
+-----------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+
| Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv |
+-----------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+
| localhost | test3 | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | Y | Y | Y | Y |
+-----------+-------+-------------------------------------------+-------------+-------------+-------------+-------------+
1 row in set (0.00 sec) mysql>
当用INSERT创建账户时,使用FLUSH PRIVILEGES 的原因是告诉服务器重读授权表。否则,只有重启服务器后更改才会生效。使用 GRANT,则不需要使用FLUSH PRIVILEGES。
用INSERT语句时,使用PASSWORD()函数是为了加密密码。GRANT语句自动加密密码,因此不需要PASSWORD()。
'Y' 值启用账户权限。
五、库操作
必须首先登录到mysql 中,有关操作都是在mysql 的提示符下进行,而且每个命令以分号结束。
5.1 创建数据库
命令:create database <数据库名>;
例1:创建一个名为test 的数据库
mysql> create database test;
Query OK, 1 row affected (0.00 sec) mysql>
5.2 显示所有的数据库
命令:show databases;(注意:最后有个s)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| david |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec) mysql>
5.3 删除数据库
命令:drop database <数据库名>;
例2:删除名为test 的数据库
mysql> drop database test;
Query OK, 0 rows affected (0.00 sec) mysql>
5.4 连接数据库
命令: use <数据库名>;
例3:连接david 数据库
mysql> use david;
Database changed
mysql>
5.5 查看当前使用的数据库
命令:select database();
mysql> select database();
+------------+
| database() |
+------------+
| david |
+------------+
1 row in set (0.00 sec) mysql>
5.6 当前数据库包含的表信息
命令:show tables;(注意:最后有个s)
mysql> show tables;
+-----------------+
| Tables_in_david |
+-----------------+
| emp |
+-----------------+
1 row in set (0.00 sec) mysql>
六、表操作
操作之前应连接某个数据库。
6.1 建立表
create table <表名> (<字段名1> <类型1> [,..<字段名n> <类型n>]); create table tablename (col1 type1 [not null] [primary key],col2 type2 [not null],..);
mysql> create table myclass (
-> id int(4) not null primary key auto_increment,
-> name char(20) not null,
-> sex int(4) not null default '0',
-> degree double(16,2));
Query OK, 0 rows affected (0.04 sec) mysql>
补充:根据已有的表创建新表。
create table tab_new like tab_old; (只有表结构) create table tab_new as select * from tab_old; (既包含表结构,又包含表数据)
只包含表结构:
mysql> create table myclass2 like myclass;
Query OK, 0 rows affected (0.00 sec) mysql>
既包含表结构,又包含表数据:
mysql> insert into myclass values(1, 'david', 1, 20130417.16);
Query OK, 1 row affected (0.02 sec) mysql>
mysql>
mysql> create table myclass3 as select * from myclass;
Query OK, 1 row affected (0.07 sec)
Records: 1 Duplicates: 0 Warnings: 0 mysql> select * from myclass3;
+----+-------+-----+-------------+
| id | name | sex | degree |
+----+-------+-----+-------------+
| 1 | david | 1 | 20130417.16 |
+----+-------+-----+-------------+
1 row in set (0.02 sec) mysql>
6.2 获取表结构
命令:
desc 表名;
or
show columns from 表名;
获取myclass & myclass2 表结构
mysql> desc myclass;
+--------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | | |
| sex | int(4) | NO | | 0 | |
| degree | double(16,2) | YES | | NULL | |
+--------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec) mysql> show columns from myclass2;
+--------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | | |
| sex | int(4) | NO | | 0 | |
| degree | double(16,2) | YES | | NULL | |
+--------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec) mysql>
6.3 删除表
命令:drop table <表名>;
例:删除表名为 myclass3 的表
mysql> drop table myclass3;
Query OK, 0 rows affected (0.00 sec) mysql> show tables;
+-----------------+
| Tables_in_david |
+-----------------+
| emp |
| myclass |
| myclass2 |
+-----------------+
3 rows in set (0.00 sec) mysql>
6.4 更改表名
命令:rename table 原表名 to 新表名;
例:将表 myclass2 名字更改为 myclass4
mysql> rename table myclass2 to myclass4;
Query OK, 0 rows affected (0.02 sec) mysql> show tables;
+-----------------+
| Tables_in_david |
+-----------------+
| emp |
| myclass |
| myclass4 |
+-----------------+
3 rows in set (0.00 sec) mysql>
6.5 在表中增加字段
命令:alter table 表名 add 字段 类型 其他;
例:在表 myclass 中添加了一个字段passtest,类型为int(4),默认值为0。
mysql> alter table myclass add passtest int(4) default '0';
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0 mysql> desc myclass;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(4) | NO | PRI | NULL | auto_increment |
| name | char(20) | NO | | | |
| sex | int(4) | NO | | 0 | |
| degree | double(16,2) | YES | | NULL | |
| passtest | int(4) | YES | | 0 | |
+----------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec) mysql>
七、数据操作
7.1 插入数据
命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )];
例:向 myclass 表中插入以下记录,留空的表示使用默认值。
mysql> insert into myclass (id, name, sex, degree, passtest) values(1, 'david', 1, 80.56, 78);
Query OK, 1 row affected (0.00 sec) mysql> insert into myclass values(2, 'sandy', 0, 100, 90);
Query OK, 1 row affected (0.00 sec) mysql> insert into myclass (id, name, sex, degree) values(3, 'renee', 0, 90.34);
Query OK, 1 row affected (0.00 sec) mysql> insert into myclass (id, name) values(4, 'china');
Query OK, 1 row affected (0.00 sec) mysql>
7.2 查询表中的数据
a. 查询所有行
命令:select <字段1,字段2,...> from < 表名 > where < 表达式 >;
例1:查看表 myclass 中所有数据
mysql> select * from myclass;
+----+-------+-----+--------+----------+
| id | name | sex | degree | passtest |
+----+-------+-----+--------+----------+
| 1 | david | 1 | 80.56 | 78 |
| 2 | sandy | 0 | 100.00 | 90 |
| 3 | renee | 0 | 90.34 | 0 |
| 4 | china | 0 | NULL | 0 |
+----+-------+-----+--------+----------+
4 rows in set (0.00 sec) mysql>
例2:查询表 david 相关信息
mysql> select * from myclass where name='david';
+----+-------+-----+--------+----------+
| id | name | sex | degree | passtest |
+----+-------+-----+--------+----------+
| 1 | david | 1 | 80.56 | 78 |
+----+-------+-----+--------+----------+
1 row in set (0.00 sec) mysql>
b. 查询前几行数据
例如:查看表 myclass 中前2行数据
mysql> select * from myclass limit 2;
+----+-------+-----+--------+----------+
| id | name | sex | degree | passtest |
+----+-------+-----+--------+----------+
| 1 | david | 1 | 80.56 | 78 |
| 2 | sandy | 0 | 100.00 | 90 |
+----+-------+-----+--------+----------+
2 rows in set (0.00 sec) mysql>
或者:
mysql> select * from myclass order by id limit 2;
+----+-------+-----+--------+----------+
| id | name | sex | degree | passtest |
+----+-------+-----+--------+----------+
| 1 | david | 1 | 80.56 | 78 |
| 2 | sandy | 0 | 100.00 | 90 |
+----+-------+-----+--------+----------+
2 rows in set (0.01 sec) mysql>
7.3 删除表中的数据
命令:delete from 表名 where 表达式;
例如:删除表 myclass 中编号为4的记录
mysql> delete from myclass where id=4;
Query OK, 1 row affected (0.00 sec) mysql> select * from myclass;
+----+-------+-----+--------+----------+
| id | name | sex | degree | passtest |
+----+-------+-----+--------+----------+
| 1 | david | 1 | 80.56 | 78 |
| 2 | sandy | 0 | 100.00 | 90 |
| 3 | renee | 0 | 90.34 | 0 |
+----+-------+-----+--------+----------+
3 rows in set (0.00 sec) mysql>
7.4 修改表中的数据
update 表名 set 字段 = 新值,… where 条件;
例:修改 myclass 表中编号为1的记录,将degree 值改成89.99
mysql> update myclass set degree=89.99 where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from myclass;
+----+-------+-----+--------+----------+
| id | name | sex | degree | passtest |
+----+-------+-----+--------+----------+
| 1 | david | 1 | 89.99 | 78 |
| 2 | sandy | 0 | 100.00 | 90 |
| 3 | renee | 0 | 90.34 | 0 |
+----+-------+-----+--------+----------+
3 rows in set (0.00 sec) mysql>
八、数据的导入导出
8.1 导出整个数据库
命令:mysqldump -u 用户名 -p 数据库名 > 导出的文件名
[root@TS-DEV bin]# ./mysqldump -uroot -p david > /tmp/david/david.sql
Enter password:
[root@TS-DEV bin]# ll /tmp/david/
total 4
-rw-r--r-- 1 root root 2764 Apr 17 17:13 david.sql
[root@TS-DEV bin]#
8.2 导出一个表
命令:mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
[root@TS-DEV bin]# ./mysqldump -uroot -p david myclass > /tmp/david/david_myclass.sql
Enter password:
[root@TS-DEV bin]# ll /tmp/david/
total 8
-rw-r--r-- 1 root root 1854 Apr 17 17:16 david_myclass.sql
-rw-r--r-- 1 root root 2764 Apr 17 17:13 david.sql
[root@TS-DEV bin]#
8.3 导出一个数据库结构
命令:mysqldump -u root -p -d --add-drop-table test > test_db.sql
-d 没有数据 --add-drop-table 在每个create 语句之前增加一个drop table
[root@TS-DEV bin]# ./mysqldump -uroot -p -d --add-drop-table david > /tmp/david/david_db.sql
Enter password:
[root@TS-DEV bin]#
8.4 导入数据库
a. 常用source 命令
进入mysql 数据库控制台
# ./mysql -uroot -p
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec) mysql> create database sandy;
Query OK, 1 row affected (0.00 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| sandy |
+--------------------+
3 rows in set (0.00 sec) mysql> use sandy
Database changed
mysql> source /tmp/david/david.sql
Query OK, 0 rows affected (0.00 sec) ... Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0... Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0... Query OK, 0 rows affected (0.00 sec) mysql> show tables;
+-----------------+
| Tables_in_sandy |
+-----------------+
| emp |
| myclass |
| myclass4 |
+-----------------+
3 rows in set (0.00 sec) mysql> select * from emp;
+------+-------+
| id | name |
+------+-------+
| 1 | david |
| 2 | sandy |
+------+-------+
2 rows in set (0.00 sec) mysql>
b. 使用mysql 命令
先创建要导入的数据库 renee。
mysql> create database renee;
Query OK, 1 row affected (0.00 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| renee |
| sandy |
+--------------------+
4 rows in set (0.00 sec) mysql>
导入数据
[root@TS-DEV bin]# ./mysql -uroot -p -D renee < /tmp/david/david_myclass.sql
Enter password:
[root@TS-DEV bin]#
查看数据
mysql> use renee;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_renee |
+-----------------+
| myclass |
+-----------------+
1 row in set (0.00 sec) mysql> select * from myclass;
+----+-------+-----+--------+----------+
| id | name | sex | degree | passtest |
+----+-------+-----+--------+----------+
| 1 | david | 1 | 89.99 | 78 |
| 2 | sandy | 0 | 100.00 | 90 |
| 3 | nancy | 0 | 90.34 | 0 |
+----+-------+-----+--------+----------+
3 rows in set (0.00 sec) mysql>
MySQL 常用基础命令的更多相关文章
- Mysql常用基础命令操作
常见操作命令:1.连接Mysql (客户端工具NaviCat.phpMyAdmin.MySQL-Front)格式: mysql -h 主机地址 -u用户名 -p用户密码(1)连接到本机上的MYSQL. ...
- MySQL数据库入门常用基础命令
MySQL数据库入门———常用基础命令 数据——公司的生命线,因此在大多数的互联网公司,都在使用开源的数据库产品,MySQL也因此关注度与使用率非常的高,所以做为运维的屌丝们,掌握它的一些基 ...
- Linux常用基础命令整理:关机命令、查看目录下文件命令等
Linux常用基础命令整理:关机命令.查看目录下文件命令等 整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能Ctrl+c按键-- ...
- MYSQL常用查命令
MYSQL常用查命令 mysql> select version(); 查看MySQL的版本号 mysql> select current_date(); 查看 ...
- CentOS常用基础命令大全
这篇文章主要介绍了CentOS常用基础命令大全,学习centos的朋友需要掌握的知识,需要的朋友可以参考下 1.关机 (系统的关机.重启以及登出 ) 的命令shutdown -h now 关闭系统(1 ...
- MySQL常用维护命令和操作
MySQL数据库安装后,除了包括MySQL服务器进程管理外,还提供了大量工具用于管理和维护MySQL服务器的其它工作.下面PHP程序员雷雪松介绍的这些命令都是在MySQL交互界面以外的命令行中执行的. ...
- Docker 使用笔记-常用基础命令
常用基础命令 环境:Linux Ubuntu 1.查看docker信息 docker version | docker info 2.启动docker服务 sudo systemctl start d ...
- Linux常用基础命令(二)
Linux常用基础命令 一.-ls--列表显示目录内容 二.-alias--设置别名 三.-du--统计目录及文件空间占用情况 四.-mkdir--创建新目录 五.-touch--创建空文件 六.-l ...
- [基础学习]MySQL常用语句命令总结
前言 相信平时大家在开发时都会使用MySQL数据库,它是目前比较火的一款数据库工具,对于大多数企业的业务来说,MySQL可以很完美地支持了. 很多时候我们都是借助mysql可视化工具操作mysql,虽 ...
随机推荐
- hdu和poj的基础dp30道
题目转自:https://crazyac.wordpress.com/dp%E4%B8%93%E8%BE%91/ 1.hdu 1864 最大报销额 唔,用网上的算法连自己的数据都没过,hdu的数据居然 ...
- gsl安装(Linux系统)
1. 在gnu的ftp站点http://ftp.gnu.org/gnu/gsl/ 上, 下载最新的gsl-2.x.tar.gz 2. 解压下载好的gsl-2.x.tar.gz 压缩包,$tar -zx ...
- 好友与组--ESFramework 4.0 进阶(11)
大部分分布式通信系统中,都会涉及到客户端之间相互通信.以及需要将客户端进行分组的功能,或者是类似这方面的需求.ESFramework对这一常见的任务内置了强大的支持,包括从客户端到服务端.一直到Pla ...
- 实现简单的手写涂鸦板(demo源码)
在一些软件系统中,需要用到手写涂鸦的功能,然后可以将涂鸦的结果保存为图片,并可以将"真迹"通过网络发送给对方.这种手写涂鸦功能是如何实现的了?最直接的,我们可以使用Windows提 ...
- Lightoj 1066 Gathering Food (bfs)
Description Winter is approaching! The weather is getting colder and days are becoming shorter. The ...
- Gentoo:Xorg:Failed to load module "……" 问题
错误描述: 安装完xorg-server后,startx启动桌面环境,出现缺少模块错误. Xorg:Failed to load module "--" 查看log: cat /v ...
- 移动前端不得不了解的HTML5 head 头标签(中下篇)
SEO 优化部分 页面标题<title>标签(head 头部必须) <title>your title</title> 页面关键词 keywor ...
- JPA 系列教程15-继承-一个表-SINGLE_TABLE
继承映射策略 一个类继承结构一个表的策略,最终只生成一个表,这是继承映射的默认策略. 举例 如果实体类Teacher继承实体类Person,实体类Student也继承自实体Person,那么只会映射成 ...
- MVC 包命名规范
action+form = model actionservlet+struts-config.xml= controller jsp+自定义标签=veiw 备注:这里说明的非常好 m ...
- jsp之用户自定义标签
创建一个类,引入外部jsp-api.jar包(在tomcat 下lib包里有),这个类继承SimpleTagSupport 重写doTag()方法. jspprojec包下的helloTag类: pu ...