注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

勇敢的劳尤条

 
 
 

日志

 
 

mysql常用的若干命令  

2013-08-13 16:12:07|  分类: mysql相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1. 在linux终端下,如何进入mysql命令行
首先,启动mysql:$sudo /etc/init.d/mysqld     /etc/init.d/mysql start      start mysql
进入mysql命令: $mysql -u user [-h host] -p [psw]
其中,[ ]中的是可选的,如果没有输入密码,回车之后再输。-u -h -p之后的空格是可以省略的。
命令举例:
mysql -uroot -hlocalhost -p******
sudo mysql -u siremis -p
sudo mysql -uroot -p****** -e "mysql命令"(这个-e选项可以实现shell终端操作mysql数据库)

2. MySQLAdmin的用法,用于执行管理性操作。
语法是:shell> mysqladmin [OPTIONS] command [command-option] command ...
通过执行mysqladmin --help,你可以得到你mysqladmin的版本所支持的一个选项列表。
目前mysqladmin支持下列命令:
create databasename             创建一个新数据库
drop databasename               删除一个数据库及其所有表
extended-status                 给出服务器的一个扩展状态消息
flush-hosts                     洗掉所有缓存的主机
flush-logs                      洗掉所有日志  
flush-tables                    洗掉所有表  
flush-privileges                再次装载授权表(同reload)  
kill id,id,...                  杀死mysql线程  
password                        新口令,将老口令改为新口令
ping                            检查mysqld是否活着  
processlist                     显示服务其中活跃线程列表
reload                          重载授权表  
refresh                         洗掉所有表并关闭和打开日志文件
shutdown                        关掉服务器  
status                          给出服务器的简短状态消息
variables                       打印出可用变量
version                         得到服务器的版本信息 

3. mysql数据库文件存放位置

    数据库配置文件/etc/mysql/my.cnf

datadir = /var/lib/mysql-----其中包括mysql数据库文件


后面的命令都是在mysql命令行下,开头都是mysql>。命令基本以;结尾,除了use。
4. 数据库的使用
        show databases;//显示数据库
//mysql数据库记录了当前的用户情况
use db_name;
show tables;//显示数据库中的所有表名字
describe table_name;//描述表的字段

Create tables [name];//创建表

CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

insert into MYTABLE values (”hyq”,”M”);

Drop tables [name];//删除表

Create database [name];//创建数据库

Drop database [name];//删除数据库(注意,不能是使用中的数据库)

全局管理权限:
FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。

5. 查看用户情况
Use mysql;Select user,host from user;//可以查看当前用户情况
create user 'webuser'@'localhost' identified by 'a1!';//创建用户,密码a1!
create user 'webuser'@'192.168.80.%' identified by 'a2!'//%表示所有主机

6. 赋予和收回权限(赋予权限用grant,收回权限用revoke) 
mysql> grant  权限1,权限2,...权限n  on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令';
mysql> revoke 权限1,权限2,...权限n  on 数据库名称.表名称 from 用户名@用户地址 identified by '连接口令';
  举例如下:
mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by '123';
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。
mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by '123';
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on *.* to joe@% identified by '123';
给来自所有ip的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
mysql>grant all privileges on *.* to joe@localhost identified by '123';
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。 
下面是查看权限情况的命令。

Show grants for user@host;//可以查看用户的权限

flush privileges;//更改权限之后,可以运行这句话以更新权限

show grants for 'webuser'@'localhost';


7. ubuntu下从一台服务器拷贝数据库到另一台服务器
1)首先要允许mysql能够从远程登录。
修改/etc/mysql/my.cnf,bind-address= 127.0.0.1  <---注释掉这一行就可以远程登录了。(允许从远程登录,增加了不安全性)
否则登录时会出现以下错误:ERROR 2003 (HY000): Can't connect to MySQL server on "host" (111)。
2)要设置数据库用户能够从远程登录
    a)可以创建一个新用户,并赋予全部权限,允许从任何ip连接上。
CREATE USER demo IDENTIFIED BY “123456”
GRANT ALL PRIVILEGES ON shandong.* TO 'demo'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION; 
FLUSH PRIVILEGES

这样就可以实现,利用demo@yourIP这个账号,可以远程登录和控制。
b)也可以利用root账号,对其重新设置权限,允许任何ip登录。
grant ALL PRIVILEGES ON *.* to root@"%" identified by "mysql" WITH GRANT OPTION; 
c)修改数据库中用户信息,直接改成%。
update user set host='%' where user = 'root'; 
    FLUSH PRIVILEGES;(也可以重启mysql)
3)进行数据库的导出和转移。
a)首先是备份数据库,下面是备份的命令形式
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 
在这里,我使用
shell$ mysqldump -uroot -p* database_name > /tmp/test.sql //将数据库导出到test.sql中
shell$ mysqldump -uroot -p* database_name | gzip /tmp/test.sql.gz //数据库压缩备份
mysqldump –all-databases > allbackupfile.sql //备份所有数据库
b)将备份好的数据,导入到目标数据库
//将文件test.sql传送到远程机子上,然后执行下面的命令(这里,mysql已经可以远程登录了)
mysql > CREATE DATABASE 新库名;
mysql > use 新库名;
mysql > source test.sql //这里要加上路径
或者
mysql -hhostname -uusername -ppassword databasename < backupfile.sql //从备份文件导入数据库
gunzip < backupfile.sql.gz | mysql -uusername -ppassword databasename  //从压缩文件导入数据库
c)可以直接用下面的命令完成导出和备份
mysqldump -uusername -ppassword databasename | mysql –hhost databasename
 
8. 删除记录或者更新记录
   用update修改记录
   UPDATE tbl_name SET 要更改的列 WHERE 要更新的记录  [ORDER BY ...]    [LIMIT row_count]
   这里的 WHERE 子句是可选的,因此如果不指定的话,表中的每个记录都被更新。

UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。

 
   delete语句格式
   DELETE FROM tbl_name WHERE 要删除的记录
   WHERE 子句指定哪些记录应该删除。它是可选的,但是如果不选的话,将会删除所有的记录(清空整个表)。

   select语句用法
   select * from tbl_name  //将会显示表中所有数据
   select a,b form tbl_name //显示表中ab字段

ALTER DATABASE用于更改数据库的全局特性。

ALTER TABLE用于更改原有表的结构。例如,您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表。您还可以更改表的评注和表的类型。


9. mysql查询表的记录数
有时候需要知道mysql表中记录的个数,才能知道当前表的规模,用户数量等。
mysql提供了一个information_schema 数据库,里面记录了其他各个数据库的规模信息。

在该库中有一个 TABLES 表,这个表主要字段分别是:

TABLE_SCHEMA : 数据库名
TABLE_NAME:表名
ENGINE:所使用的存储引擎
TABLES_ROWS:记录数
DATA_LENGTH:数据大小
INDEX_LENGTH:索引大小

下述命令功能是:显示数据库名、表名、记录数,并按照记录数倒序排列。

use information_schema;

select table_schema,table_name,table_rows from tables order by table_rows desc;

上述方法缺点明显,每次都要选择使用数据库才行,所以比较麻烦,下面这句,可以直接搞定。

show table status from DBname\G

*****这两个方法其实都不怎么靠谱,因为我做了许多测试,发现当数据量比较大时,rows显示的结果并不准确,经常大出一些,所以感觉不太靠谱。

SELECT SQL_CALC_FOUND_ROWS * FROM table_name;
SELECT FOUND_ROWS(); 
这个方法,就是读出所有行,准确,但是数据量一大,时间消耗难以接受。

  评论这张
 
阅读(101)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017