mysql操作命令记录

来源:互联网 发布:西安软件新城二期工程 编辑:程序博客网 时间:2024/05/22 20:28

一:安装完mysql后,会缺少 /etc/my.cnf 文件,可以手动添加。

配置项目参考:http://my.oschina.net/eduosi/blog/270535 


[client]port            = 3306#socket          = /var/lib/mysql/mysql.sockdefault-character-set=utf8[mysqld]#basedir=/db/mysql-5.6.23-linux-glibc2.5-x86_64#datadir=/db/mysql-5.6.23-linux-glibc2.5-x86_64/dataport            = 3306#socket          = /var/lib/mysql/mysql.sockkey_buffer_size = 16Mmax_allowed_packet = 1Mtable_open_cache = 64sort_buffer_size = 512Knet_buffer_length = 8Kread_buffer_size = 256Kread_rnd_buffer_size = 512Kmyisam_sort_buffer_size = 8M#language        = /db/mysql-5.6.23-linux-glibc2.5-x86_64/share/englishcharacter_set_server=utf8#tmpdir=/db/mysql-5.6.23-linux-glibc2.5-x86_64/tmpdirslow_query_log = 1slow_query_log_file = /data/log/mysql/slow.loglong_query_time = 0.1query_cache_size=32Mquery_cache_type=1general_log = 0general_log_file = /data/log/mysql/general.logmax_connections = 2000log-bin=mysql-binbinlog_format=mixedserver-id=1innodb_buffer_pool_size = 2Ginnodb_log_file_size = 48Msql-mode=ANSI[mysqld_safe]log-error=/usr/local/mysql/data/mysqld.local.errpid-file=/usr/local/mysql/data/mysqld.local.pid[mysql]no-auto-rehashdefault-character-set=utf8



二:定义MySQL别名
输入 alias 命令
alias mysql=/usr/local/mysql/bin/mysql
alias mysqladmin=/usr/local/mysql/bin/mysqladmin


三、设置mysql root账号的密码
mysqladmin -u root password ***(#初始密码)
// 如果设置完成后,需要修改,执行命令
mysqladmin -u root -p password new***(#最新密码)
接着会提示输入密码,此时输入旧密码,回车


四、连接数据库
mysql -u root -p
然后提示输入密码


如果是登录远程主机上的mysql数据库
mysql -h 主机地址 -u 用户名 -p 用户密码


五、执行常用的mysql数据库操作
新增用户 授权


格式如下: grant 操作权限 on 数据库.* to test1@"%" identified by "abc";
意思是: 授予,某主机上的某用户(附带该用户的登录密码)在某数据库上,执行某些操作的权限


(1)比如:任意主机上(“%”),用户(用户名:test1,密码:adc)在所有数据库上,执行任意操作的权限(危险哦)
grant all privileges on *.* to test1@"%" identified by “abc”;


其中 all privileges 表示查询、插入、修改、删除的权限:select、insert、update、delete
以上命令等价于:
grant select,insert,update,delete on *.* to test1@"%" identified by "abc";


然后刷新权限
flush privileges;


(2)比如:授权本地主机上的用户操作数据库的权限
创建数据库(比如:openfire)
create database openfire;


授予本地主机用户 (用户名:test1,密码:test1)访问数据库(数据库名称:openfire)的操作权限
grant all privileges on openfire.* test1@localhost identified by "test1";
flush privileges;
现在,就可以用新的用户,访问openfire数据库了。


2.更新指定账户的密码(用户名:test1,新密码:1234)
update mysql.user set password=password('1234') where User="test1" and Host="localhost";


3.删除用户


先使用mysql数据库
use mysql;


删除mysql数据库中user表中的某个本地用户(test7)
delete from user where User="test7" and Host=“localhost”;


4.显示命令


(1)显示所有数据库列表
show databases;
注意:Mysql的系统信息都存储在mysql库中,比如:修改密码和新增用户,实际就是在这个库进行


(2)打开某个数据库(比如数据库:openfire);
use openfire;


(3)显示本库中的所有表
show tables;
mysql> show columns in tb_test;


(4)显示某表的结构
describe table1;


(5)建库
create database 库名;


(6)建表
use 库名;
create table 表名 (字段设定列表);


(7)删库
drop database 库名;


(8)删表
drop table 表名;


(9)将表中的记录清空
delete from 表名;


(10)显示表中的记录
select * from 表名;


六、退出mysql
exit


七、启动和停止mysql
启动
/usr/local/mysql/share/mysql.server start


停止
/usr/local/mysql/bin/mysqladmin -u root -p shutdown
输入root密码



附:
一、MySQL处理数据库和表的常用命令


复制表
基于现有的表创建新表是一项很容易的任务。以下代码将得到tb_test表的一个副本,名为tb_test2:
mysql> create table tb_test2 select * from db_test.tb_test;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0
将向数据库增加一个相同的表tb_test2。而有的时候,可能希望只基于现有表的几个列创建一个表。通过create select语句中指定列就可以实现:


创建临时表
有的时候,当工作在非常大的表上时,可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录保存到一个临时表可能更快一些,然后对这些临时表进行查询操作。可以通过使用temporary关键字和create table语句来实现。
mysql> create temporary table emp_temp select firstname, lastname from tb_test;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
临时表的创建与其它表一样,只是它们存储在操作系统指定的临时目录中。临时表将在你连接MySQL期间存在,当你断开时,MySQL将自动删除表并释放所有的内存空间;当然了,你也可以手动的使用drop table命令删除临时表。


更改表结构
我们会发现,我们会经常修改和改进表结构,特别是在开发初期;但是,每次进行修改时不必都先删除再重新创建表。相反,可以使用alter语句修改表的结构。利用这个语句,可以再必要时删除、修改和增加列。和create table一样,alter table提供了很多子句、关键字和选项。这里只是会说一些简单的使用,比如在表tb_demo表中插入一列,表示email,代码如下:
mysql> alter table tb_demo add column email varchar(45);


新的列放在表的最后位置。不过,还可以使用适当的关键字(包括first、after和last)来控制新列的位置。如果想修改表,比如,刚刚加的email,我想加入一个not null控制,代码可以是这样的:
mysql> alter table tb_demo change email email varchar(45) not null;


如果觉的这个email这列没有存在的必要了,可以使用下面的代码删除它,例如:
mysql> alter table tb_demo drop email;


增加列:ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c); 
修改列:ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20); 
删除列:ALTER TABLE t2 DROP COLUMN c; 


备份表: mysqlbinmysqldump -h(ip) -uroot -p(password) databasename tablename > tablename.sql 
恢复表: mysqlbinmysql -h(ip) -uroot -p(password) databasename tablename < tablename.sql(操作前先把原来表删除) 


备份数据库:mysql/bin/mysqldump -h(ip) -uroot -p(password) databasename > database.sql 
恢复数据库:mysql/bin/mysql -h(ip) -uroot -p(password) databasename < database.sql 
复制数据库:mysql/bin/mysqldump --all-databases > all-databases.sql 
修复数据库:mysqlcheck -A -o -uroot -p54safer 


文本数据导入:load data local infile /"文件名/" into table 表名; 
数据导入导出:mysql/bin/mysqlimport database tables.txt


查看binlog日志:
mysqlbinlog --no-defaults --start-datetime='2015-12-31 00:00:00' --stop-datetime='2015-12-31 21:01:01' -d openfire mysql-bin.000001

查看二进制日志里的操作记录

mysql> show binlog events;

mysql> show variables like '%log_bin%';



查看系统变量:
show variables;
show variables like '%error%';
show variables like '%pid%';
show variables like 'binlog_format';


查询Mysql数据库当前连接的用户及会话信息:
mysql> show full processlist;

mysqladmin -uroot -p -hlocalhost processlist

查询Mysql数据库的状态信息:

mysqladmin  -uroot -p -hlocalhost status


mysql运行状态查看 SHOW STATUS; 或者直接读取虚拟数据库informat_schema对象GLOBAL_STATUS(注:5.1及以上版本)的数据

mysql> use performance_schema;

mysql> select * from GLOBAL_STATUS;


字段含义参考 http://www.dedecms.com/knowledge/data-base/mysql/2012/0706/2740.html

1) SQL语句执行量
  (1). Queries
  MySQL服务器执行的所有SQL语句次数,包过存储过程执行的SQL语句,但是不包含命令COM_PING 和COM_STATISTICS的执行次数;
  (2). Questions
  由客户端发送给服务器端执行的所有SQL语句次数,但是不包含存储过程执行的SQL语句,也不包含命令COM_PING 和COM_STATISTICS的执行次数;
  (3). Com_****统计



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



想更详细了解mysql用法推荐看:

http://www.cnblogs.com/zhangzhu/archive/2013/07/04/3172486.html


0 0
原创粉丝点击