linux 查看数据库和表 mysql 命令

查看是否有安装数据库 :rpm -qa|grep -i mysql

如图已安装:

未安装:

查看MySQL版本的四种方法

1 在终端下执行 mysql -V

2 在help中查找 mysql --help |grep Distrib

3 在mysql 里查看 select version();

4 在mysql 里查看 status;

mysql -h localhost -u 用戶名 -p密码                //链接数据库

use desk_show;                                          //使用数据库

show tables;                                              //显示数据表

describe desk6_0;                                     //显示表结构

通过rpm查看

查看软件是否安装

首先我们需要查看软件是否已经安装,或者说查看安装的软件包名称。如查找是否安装mysql


接着根据 rpm -ql 列出软件包安装的文件

使用  rpm -qal |grep mysql 查看mysql所有安装包的文件存储位置

Yum查找

除了rpm 查询还可以通过yum search 查找对应可以安装的软件包

其他查找方法

除了根据软件包来找文件位置之外,最常用的就是通过find查找某个关键字比如mysql所有包含mysql服务的文件路径

Which查找命令

Which命令是通过 PATH环境变量查找可执行文件路径,用于查找指向这个命令所在的文件夹

Whereis命令和find类似,不过不同的是whereis是通过本地架构好的数据库索引查找会比较快。如果没有更新到数据库里面的文件或命令则无法查找到信息



mysql其他命令:


show databases; 显示数据库


create database name; 创建数据库


use databasename; 选择数据库

 执行命令source /root/20151010.sql

drop database name 直接删除数据库,不提醒


show tables; 显示表


describe tablename; 显示具体的表结构

select 中加上distinct去除重复字段


mysqladmin drop databasename 

删除数据库前,有提示。


显示当前mysql版本和当前日期

select version(),current_date; 


root密码管理

设置root用户的密码     mysqladmin -uroot password 'password'

修改root用户的密码     mysqladmin -uroot -p password 'password'

数据库,表管理

进入mysql     mysql -h hostname -uroot -p

创建数据库     mysql> create database location

导入数据结构     mysql -uroot -p location <./location.sql

查看数据库     mysql> show databases;

进入某个库     mysql> use location;

查看表信息     mysql> show tables;

查看表结构     mysql> desc Contact;

改表名     mysql> rename table Contact to Contact_new

删除库     mysql> drop database location

删除表     mysql> drop table Contact

授权部分

建立用户并授权     mysql> grant all on location.* to gk1020@'10.1.11.71' identified by 'gk1020'

取消授权     mysql> revoke all on location.* from gk1020@'10.1.11.71'

刷新权限     mysql> flush privileges

操作语句

查询     mysql> select * from Contact

mysql> select count(*) from Contact

修改     mysql> update Contact set RegTime=‘2008-01-01 00:00:00’ where id=1

mysql> update Contact set RegTime=‘2008-01-01 00:00:00’,CID=1 where id=1

插入     mysql> insert into Contact values('',''…)

mysql> insert into Contact(ID,CID,Contact) values('',''…)

删除     mysql> delete from Contact where id=1

备份数据库location     mysqldump -uroot -p -l location >./location.sql

备份某个表     mysqldump -uroot -p -l --database location --table Contact >./contact.sql

导出数据库location的数据结构     mysqldump -d -uroot -p location >./location.sql

恢复数据库:mysql -uroot -p location < location.sql

备份数据文件和sql文件分离:mysqldump -uroot -p location contact -T backup/

导出数据: select * from contact into outfile 'contact.txt';

恢复sql文件:cat contact.sql | mysql -uroot -p location

导入数据(要跟绝对路径) mysqlimport -uroot -p zhang  /usr/local/mysql/var/backup/contact.txt

复制表     复制表Contact为Contact_bak     mysql> create table Contact_bak as select * from Contact

复制表Contact的结构     mysql> create table Contact_bak as select * from Contact where 1=2

查看正在执行的任务           mysql> show processlist

kill正在执行的任务      mysqladmin -uroot -p kill process_id

查看表状态:mysql> check table Contact  or mysqlcheck -uroot -p -c location Contact

修复表:        mysql> repair table Contact  or mysqlcheck -uroot -p -r location Contact

优化表:        mysql> optimize table Contact  or mysqlcheck -uroot -p -o location Contact


MySQL mysqldump 导入/导出 结构&数据&存储过程&函数&事件&触发器

———————————————-库操作———————————————-

1.①导出一个库结构

mysqldump -d dbname -u root -p > xxx.sql

②导出多个库结构

mysqldump -d -B dbname1 dbname2 -u root -p > xxx.sql


2.①导出一个库数据

mysqldump -t dbname -u root -p > xxx.sql

②导出多个库数据

mysqldump -t -B dbname1 dbname2 -u root -p > xxx.sql


3.①导出一个库结构以及数据

mysqldump dbname1 -u root -p > xxx.sql

②导出多个库结构以及数据

mysqldump -B dbname1 dbname2 -u root -p > xxx.sql

———————————————-表操作———————————————-

4.①导出一个表结构

mysqldump -d dbname1 tablename1 -u root -p > xxx.sql

②导出多个表结构

mysqldump -d -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql


5.①导出一个表数据

mysqldump -t dbname1 tablename1 -u root -p > xxx.sql

②导出多个表数据

mysqldump -d -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql


6.①导出一个表结构以及数据

mysqldump dbname1 tablename1 -u root -p > xxx.sql

②导出多个表结构以及数据

mysqldump -B dbname1 --tables tablename1 tablename2 -u root -p > xxx.sql

————————————–存储过程&函数操作————————————-

7.只导出存储过程和函数(不导出结构和数据,要同时导出结构的话,需要同时使用-d)

mysqldump -R -ndt dbname1 -u root -p > xxx.sql

———————————————-事件操作———————————————-

8.只导出事件

mysqldump -E -ndt dbname1 -u root -p > xxx.sql

—————————————–触发器操作——————————————–

9.不导出触发器(触发器是默认导出的–triggers,使用–skip-triggers屏蔽导出触发器)

mysqldump --skip-triggers dbname1 -u root -p > xxx.sql

————————————————————————————————

10.导入

mysql -u root -p

use game;

source xxx.sql

————————————————————————————————

总结一下:

-d 结构(--no-data:不导出任何数据,只导出数据库表结构)

-t 数据(--no-create-info:只导出数据,而不添加CREATE TABLE 语句)

-n (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)

-R (--routines:导出存储过程以及自定义函数)

-E (--events:导出事件)

--triggers (默认导出触发器,使用--skip-triggers屏蔽导出)

-B (--databases:导出数据库列表,单个库时可省略)

--tables 表列表(单个表时可省略)

①同时导出结构以及数据时可同时省略-d和-t

②同时 不 导出结构和数据可使用-ntd

③只导出存储过程和函数可使用-R -ntd

④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)

⑤只导出结构&函数&事件&触发器使用 -R -E -d

PS:如果可以使用相关工具,比如官方的MySQL Workbench,则导入导出都是极为方便的,如下图。(当然为了安全性,一般情况下都是屏蔽对外操作权限,所以需要使用命令的情况更多些)


导入遇到问题  ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes

使用Navicat For Mysql备份建新数据库的时候,表导入不了,查看日志,有脚本报错,原来是文件大于16M所致

报错信息如下:ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes。


于是调整配置文件: /etc/my.cnf

修改mysql的最大允许包大小

在[mysqld]部分(不在这部分没用)添加一句:

max_allowed_packet=50M

重启mysql服务就可以了。

重启命令如下:

一、启动方式

1、使用 service 启动:service mysqld start

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start

3、使用 safe_mysqld 启动:safe_mysqld&

二、停止

1、使用 service 启动:service mysqld stop

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

3、mysqladmin shutdown

三、重启

1、使用 service 启动:service mysqld restart

2、使用 mysqld  脚本启动:/etc/inint.d/mysqld restart


迁移服务器,要把旧服务器上的mysql数据复制到新服务器的mysql上。

我先是把旧服务器的数据库用mysqldump复制了一份,然后想导入到新服务器,用命令导入,结果提示


网上说的方案,我在命令行加上--max_allowed_packet=128M

mysql --max_allowed_packet=128M -u user -ppass database < database.sql

结果还是提示 Got a packet bigger than 'max_allowed_packet' bytes

然后我又尝试用MysqlWorkBench客户端导入,还是提示 Got a packet bigger than 'max_allowed_packet' bytes 。

实在太奇怪了,明明这个.sql文件只有82K啊!

解决方案

mysql -u root -p -e "set global net_buffer_length=1000000; set global max_allowed_packet=1000000000;"

然后重启 mysqld, 再正常导入就可以了……

你可能感兴趣的:(linux 查看数据库和表 mysql 命令)