Mysql常用基础命令操作

常见操作命令:
1、连接Mysql (客户端工具NaviCat、phpMyAdmin、MySQL-Front)
格式: mysql -h 主机地址 -u用户名 -p用户密码
(1)连接到本机上的MYSQL。
首先进入Mysql安装程序的bin目录下,
命令./mysql -u root -p,回车后提示你输密码. 注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。

(2)连接到远程主机上的MySQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h 110.110.110.110 -u root -pabcd123
注:u与root之间可以不用加空格

(3)退出MySQL命令: exit (回车)或者quit(回车)


2、修改密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码
(1)首先在Mysql安装目录下面的bin目录,然后键入以下命令
mysqladmin -u root -p旧密码 password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略,但回车后会提示输入旧密码
(2)再将root的密码改为abc345。
mysqladmin -u root -p ab12 password abc345

*************************************************
另一种修改密码方法:(5.7版本之后,防密码泄露)
进入数据库后,在mysql命令行下执行命令:
mysql> SET PASSWORD = PASSWORD('xxxxx(新密码)');            #修改密码
mysql> ALTER USER 'root@localhost' PASSWORD EXPIRE NEVER;       #设置密码永不过期
mysql> flush privileges;                           #刷新权限(激活)
注:数据库命令完成后须跟“;”号

*************************************************

3、增加新用户/授权用户
注意:和上面不同,下面的因为是MYSQL命令行中的命令,所以后面都带一个分号作为命令结束符
格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
解析:
grant          #授权
select         #查询权限
on         #关键字 后面跟数据库名称
数据库.*     #数据库名称,后面跟“.*”表示这个数据库下所有的表;也可以跟“.XXX”表示某个单独的表
to       #关键字 后面跟用户名和登录主机(是指远程需要登录的主机) 表示前面权限给哪个用户
identified   #关键字 设置密码(表示后面数据密码)
by        #关键字 后面跟密码

eg:
(1)增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。

首先用root用户连入MYSQL,然后键入以下命令:
mysql>grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
解析:
授权可以多权限,用,号间隔;
on *.* “*.*” 表示所有数据库的所有表,前面*号表示所有数据库,后面*号表示数据库内的表
to test1@“%” 表示test1用户,@“%” %号表示任意主机
by “abc” 表示设置的密码
注意:这种权限增加的用户是很危险的,如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录这台mysql数据库,并可对数据进行任意操作,解决办法是设置登录权限。

(2)增加一个用户test2密码为abc,让它只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机)。
mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密码(或者取消test2密码),可以执行下面这个命令将密码取消掉。
mysql>grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
如果想给一个用户test2授予访问mydb数据库的所有权限,并且仅允许test2在192.168.11.121这个客户端ip登录访问,可执行如下命令:
mysql>grant all on mydb.* to test2@192.168.11.121 identified by "abc";
解析:
all 表示所有权限

4、数据库基础操作

(1)创建数据库
注意:创建数据库之前要先连接Mysql服务器

命令:create database <数据库名>

创建数据库,并分配用户方法:
CREATE DATABASE 数据库名;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY '密码';

eg:建立一个名为abc的数据库
mysql> create database abc;

(2)显示数据库

命令:show databases (注意:最后有个s)
mysql> show databases;

(3)删除数据库
命令:drop database <数据库名>
eg:删除名为 iivey的数据库
mysql> drop database iivey;

mysql> drop database if exists drop_database;     #if exists 判断数据库是否存在,不存在也不产生错误 (如果drop_database数据库存在,删除)
Query OK, 0 rows affected (0.00 sec)

(4)连接数据库

命令: use <数据库名>

eg:如果iivey数据库存在,尝试存取它:
mysql> use iivey;
use语句可以通告MySQL把iivey数据库作为默认(当前)数据库使用,用于后续语句。该数据库保持为默认数据库,直到语段的结尾,或者直到发布一个不同的USE语句。

5、Mysql表操作

(1)创建数据表
命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
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));

(2)删除数据表
命令:drop table <表名>

eg:删除表名为 MyClass 的表
mysql> drop table MyClass;

(3)表插入数据
命令:insert into <表名> [( <字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )]
解析:( <字段名1>[,..<字段名n > ]) 这里字段可以省略,后面对应的values 就会以创建时字段进行默认插入记录。
eg:在表MyClass中插入两条记录, 这两条记录表示:编号为1的名为Tom的成绩为90.45, 编号为2 的名为Joan 的成绩为88.99, 编号为3的名为Wang的成绩为99.5。
mysql> insert into MyClass values(1,'Tom',90.45),(2,'Joan',88.99), (3,'Wang', 99.5);

(4)查询表中的数据
1)、查询所有行
命令: select <字段1,字段2,...> from < 表名 > where < 表达式 >
解析:
*号 表示任意匹配字段(所有数据库或表内所有数据)
from 后面跟表名
where 条件(进一步查询的条件)
eg:查看表 MyClass 中所有数据
mysql> select * from MyClass;
2)、查询前几行数据
eg:查看表 MyClass 中前2行数据
mysql> select * from MyClass order by id limit 0,2;
解析:
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果希望按照降序对记录进行排序,可以使用 DESC 关键字

(5)删除表中数据
命令:delete from 表名 where 表达式
eg:删除表 MyClass中编号为1的记录
mysql> delete from MyClass where id=1;

(6)修改表中数据
语法:update 表名 set 字段=新值,… where 条件
mysql> update MyClass set name='Mary' where id=1;

(7)增加字段
命令:alter table 表名 add 字段 类型 其他;
eg:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0
mysql> alter table MyClass add passtest int(4) default '0'

(8)修改表名
命令:rename table 原表名 to 新表名;
eg:在表MyClass名字更改为YouClass
mysql> rename table MyClass to YouClass;

另:
查看某个数据库内所有表信息:
进入数据库
show tables;
desc xxxx; 表示查看表的结构信息

6、备份数据库
(1)导出整个数据库
导出文件默认是存在
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql

(2)导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql

(3)导出一个数据库结构
mysqldump -u user_name -p -d --add-drop-table database_name > outfile_name.sql
含义:
-d 表示只导出表结构不导出数据
--add-drop-table(默认语句,可以不加) 在每个create语句之前增加一个drop table
也就是说默认下,导出的每个表或数据库的create语句前,都会加入“DROP TABLE IF EXISTS 'XXXXX'”这句提示,如果不需要提示可以用“--skip-add-drop-table”表示跳过提示

(4)带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 --set-charset=gbk --skip-opt database_name > outfile_name.sql

(5)导入数据
create database XXX;      #先创建数据库
use XXX;           #指定该数据库
source XXX.sql;          #导入数据;注意该操作需要在保存备份数据文件内进行。

原文地址:https://www.cnblogs.com/liuxc83/p/12837200.html