mysql常用命令

1、MySQL常用命令

create database name; 创建数据库

use databasename; 选择数据库

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

show tables; 显示表

describe tablename; 表的详细描述

select 中加上distinct去除重复字段

mysqladmin drop databasename 删除数据库前,有提示。

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

select version(),current_date;

2、修改mysql中root的密码:

shell>mysql -u root -p

mysql> update user set password=password(”xueok654123″) where user=’root’;

mysql> flush privileges //刷新数据库

mysql>use dbname; 打开数据库:

mysql>show databases; 显示所有数据库

mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后

mysql>describe user; 显示表mysql数据库中user表的列信息);

3、grant

创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个

mysql> grant all privileges on *.* to user@localhost identified by ’something’ with

增加新用户

格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”

GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;

删除授权:

mysql> revoke all privileges on *.* from root@”%”;

mysql> delete from user where user=”root” and host=”%”;

mysql> flush privileges;

创建一个用户custom在特定客户端https://www.360docs.net/doc/ed12833583.html,登录,可访问特定数据库fangchandb

mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ https://www.360docs.net/doc/ed12833583.html, identified by ‘ passwd’

重命名表:

mysql > alter table t1 rename t2;

4、mysqldump

备份数据库

shell> mysqldump -h host -u root -p dbname >dbname_backup.sql
(导出数据库如:mysqldump -h localhost -u root -p user【数据库名称】 >E:/users.sql)

恢复数据库

shell> mysqladmin -h myhost -u root -p create dbname

shell> mysqldump -h host -u root -p dbname < dbname_backup.sql
(导入数据库如:mysqldump -h localhost -u root -p user【数据库名称】 < E:/users.sql)

如果只想卸出建表指令,则命令如下:

shell> mysqladmin -u root -p -d databasename > a.sql

如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:

shell> mysqladmin -u root -p -t databasename > a.sql

那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?

mysqldump -T./ phptest driver [如:mysqldump -u root -p -T E:/sql/ user users]

其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。如果不指定driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文

件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。

5、可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查

询,可如下执行这些查询:

例如,如果您想将建表语句提前写在sql.txt中:

mysql > mysql -h myhost -u root -p database < sql.txt







CREATE DATABASE `php168` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;












工作中可能碰到的数据库自动备份需求。
技术也不太复杂,主要就是mysqldump和crontab,不过还是结合网上的资料以及自己的理解自己整理一篇,供后来者参考。不知道发在这里合适不?


Linux下自动实现Mysql数据库的异地备份方案
项目需求:为防止公司网站重要的数据丢失,必须实现服务器Mysql数据库的备份。根据本公司情况,从技术手段上实现异地日备份来提高安全性。

服务器环境:Linux Enterprise Server 2.6.9-42.Elsmp,Mysql 5.1.11-beta-log

配置步骤:

A:数据库的备份;以下脚本可实现mysql数据库的备份,也是官方所推荐的,即采用mysqldump导出mysql数据库到一个文件当中。
/usr/local/mysql/bin/mysqldump -uroot –p123456789 a1m > $(date +%Y%m%d)-a1m.sql
/usr/local/mysql/bin/mysqldump -uroot –p123456789 Asia1Market > $(date +%Y%m%d)-Asia1Market.sql

说明:/usr/local/mysql/bin/mysqldump 表示Mysql备份命令所在的绝对路径;-uroot表示用root用户登陆Mysql数据库;-p123456789 表示root用户的密码;a1m表示需要备份的数据库;$(date +%Y%m%d)-a1m.sql表示备份后自动生成的文件,格式为20070305-a1m.sql以下如此。

B:数据库文件的打包压缩;这样可以见减小数据包的大小加速数据在网络上传输的速度。
tar -zcvf $(date +%Y%m%d)mysql.tar.gz ./$(date +%Y%m%d)*

C:实现FTP的自动化;
Host=111.11.11.11 //指定上传数据库文件的FTP服务器
Username=e00021 //FTP用户名,在备份服务器上开通一帐户具有写的权限
Passwd=123456789 //FTP 密码
echo "open $Host
user $Username $Passwd
bin
cd ./mysqlbak
prompt off
mput $(date +%Y%m%d)mysql.tar.gz
printf "\n"
close
bye"|ftp -i –n

D:删除临时文件;为了节省服务器上宝贵的空间,可以用以下脚本删除曾经在服务器上生成的临时文件
rm -rf $(date +%Y%m%d)-a1m.sql $(date +%Y%m%d)-Asia1Market.sql $(date +%Y%m%d)mysql.tar.gz
通过把以上几种技术结合起来就可实现数据库的自动备份以及上传到指定FTP服务器上去,实现数据的异地备份,从而提高数据的冗余度和安全行。然后结合Linux下强大的自动执行任务程序crontab就可以实现每天服

务器自动的进行以上命令而不需要人为的干涉。

E:自动化crontab的使用
首先结合以上脚本定制出适合本公司的一段shell脚本放在服务器根目录下/mysqlbak,命名为mysqlbak.sh,并且赋予可执行的权限。脚本内容如下:
-------------------------------------------------------------------------------------------------------
#!/bin/bash
#Ftp Informaition
Host=111.11.11.11
Username=backup
Passwd=123456789
#start mysqldump back
/usr/local/mysql/bin/mysqldump -uroot –p123456789 a1m > $(date +%Y%m%d)-a1m.sql
/usr/local/mysql/bin/mysqldump -uroot –p123456789 Asia1Market > $(date +%Y%m%d)-Asia1Market.sql
#start tar
tar -zcvf $(date +%Y%m%d)mysql.tar.gz ./$(date +%Y%m%d)*
#start ftp
echo "open $Host
user $Username $Passwd
bin
cd ./mysqlbak
prompt off
mput $(date +%Y%m%d)mysql.tar.gz
printf "\n"
close
bye"|ftp -i -n
#del the old file
rm -rf $(date +%Y%m%d)-a1m.sql $(date +%Y%m%d)-Asia1Market.sql $(date +%Y%m%d)mysql.tar.gz
#rm -rf $(date +%Y%m%d)*
然后就可以结合crontab命令实现日备份。具体操作如下:
用root登陆系统编辑crontab文件末尾添加如下一行,即每天的23:20执行以上脚本
#crontab –e
20 23 * * 0-6 root cd /mysqlbak;./mysqlbak.sh
这样,服务器就可以自动的每天实现重要数据的异地备份。

[ 本帖最后由 linux_admin 于 2007-5-23 16:43 编辑 ]

相关文档
最新文档