一、导出数据库:
1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录
如我输入的命令行:cd D:Program FilesMySQLMySQL Server 5.5in
(或者直接将windows的环境变量path中添加该目录)
2,导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名
如我输入的命令行:mysqldump -u lmapp -p lmapp -P 3308 > lmapp.sql (输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)
mysql导出数据库一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u lmapp -p lmapp users> test_users.sql (结尾没有分号)
3、会看到文件news.sql自动生成到bin文件下
二、导入数据库:
1,将要导入的*.sql放在某个路径
2,同上面导出的第1步
3,进入MySQL:mysql -u 用户名 -p,如命令行:mysql -u root -p (输入同样后会让你输入MySQL的密码)
4,在MySQL中新建你要建的数据库 如新建一个名为news的目标数据库,如命令行:CREATE DATABASE news
5,输入:mysql>use 目标数据库名,如命令行:mysql>use news;
6,导入文件:mysql>source 导入的文件名,如命令行:mysql>source news.sql;
三、授权用户访问
输入命令:
GRANT USAGE ON news.* TO 'username'@'%' IDENTIFIED BY 'password';
如果出现如下错误:
The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
解决办法:
mysql> set global read_only=0;
(关掉新主库的只读属性)
flush privileges;
set global read_only=1;(读写属性)
flush privileges;
解释:
set global read_only=0; 关闭只读,可以读写
set global read_only=1; 开始只读模式
常用命令
一、用户授权
1、选择数据表
语句如下:use mysql;
2、在mysql的user表中增加连接用户帐号:
这里不要直接使用INSERT语句添加user记录,使用INSERT可能出现:
ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value错误。不过早期的MYSQL版本笔者倒没出现这个错误,因为天缘一直都是直接修改user表或直接使用INSERT语句完成,后来升级 MYSQL到5.1的时候,发现可能会出现这个错误。
建议使用GRANT语句进行授权,语句如下:
GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
上句:
“username”替换为将要授权的用户名,比如clientusr;
“password”替换为clientusr设置的密码;
3、可访问数据表授权
创建好帐户之后,就开始给上面的common user进行数据表授权,步骤3中增加的连接用户默认权限都是“N”的,必须在db表中为该帐户授权,允许其访问专用数据库,当然超级用户就不说了。
使用下面语句:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON yourdbname.tablename TO 'username'@'localhost' IDENTIFIED BY 'password';
本语句中的权限根据实际需要确定:
"tablename"替换为授权访问的数据表table名
"username"是步骤2授权用户名
"password"是步骤2授权用户的设置密码
这样就为该用户授予了对某数据表的SELECT, INSERT, UPDATE, DELETE, CAREATE, DROP权限。
4、生效授权,创建完毕
一句话即可:FLUSH PRIVILEGES;
二、查看默认端口号
1、登录mysql
[root@localhost ~]# mysql -uroot -p
Enter password: 输入数据库密码;
2、使用show global variables like 'port'; 命令查看端口号,
三、启动停止
启动
service mysql start
停止
mysqladmin -p -u root shutdown
service mysql stop
四、查询进程
ps -ef | grep mysqld
如果有mysqld_safe和mysqld两个进程,说明MySQL服务当前在启动状态。
五、配置开机自启动
配置启动
chkconfig --add mysql
chkconfig mysqld on
查看开机自启动的服务使用chkconfig命令
#chkconfig --list
或是只查看MySQL服务
#chkconfig --list mysqld
MySql命令行程序使用
1、登录mysql
本地:mysql -u root -p, 回车后输入密码; 也可以p后不加空格,直接加密码。回车就登录了
远程:mysql -hxx.xx.xx.xx -u -pxxx
2、查看数据库:show databases;
3、连接数据库:use db_name;
4、查看数据表:show tables;
5、查询:select * from table_name where xxx and xxx;
6、当前选择的数据库:select database();
7、查询mysql版本:select version();
8、当前时间:select now();或select current_timestamp();
9、打印年月日:SELECT DAY/MONTH/YEAR(CURRENT_DATE);
10、打印字符:SELECT "I'am danny.yao";
11、查看表结构:describe <表名>;
12、当前所有连接的详细情况:show full processlist;(没有full,只显示前100个连接)
13、查看状态:show status like '%下面变量%';
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。
Connections 试图连接MySQL服务器的次数。
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
Delayed_writes 用INSERT DELAYED写入的行数。
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。
Handler_delete 请求从一张表中删除行的次数。
Handler_read_first 请求读入表中第一行的次数。
Handler_read_key 请求数字基于键读行。
Handler_read_next 请求读入基于一个键的一行的次数。
Handler_read_rnd 请求读入基于一个固定位置的一行的次数。
Handler_update 请求更新表中一行的次数。
Handler_write 请求向表中插入一行的次数。
Key_blocks_used 用于关键字缓存的块的数量。
Key_read_requests 请求从缓存读入一个键值的次数。
Key_reads 从磁盘物理读入一个键值的次数。
Key_write_requests 请求将一个关键字块写入缓存次数。
Key_writes 将一个键值块物理写入磁盘的次数。
Max_used_connections 同时使用的连接的最大数目。
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables 已经打开的表的数量。
Questions 发往服务器的查询的数量。
Slow_queries 要花超过long_query_time时间的查询数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多少秒。
14、看表注释,字段注释;
show create table table_name;
show full columns from table_name;
show table status;
15. 删除表
方法1:delete from 表名;
方法2:truncate table 表名;
比 较:
不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。
效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。
delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。
16. 表操作
复制表结构:create table table1 like table;
复制数据:insert into table1 select * from table
修改字段名称命令
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
ALTER TABLE hotel_terminal CHANGE terminal_os terminal_os VARCHAR(200);
修改表结构
alter table competitor_goods add sku_id bigint(20) unsigned DEFAULT NULL COMMENT '商品销售码';
17. 查看表生成的DDL
show create table table_name;
18.导出数据到csv
select org_info.org_id,org_info.org_name,lock_brand from hotel_room_card_pwd INNER JOIN org_info ON hotel_room_card_pwd.org_id=org_info.org_id INTO OUTFILE '/tmp/lock_brand.csv' CHARACTER SET utf8 FIELDS TERMINATED BY ',' LINES TERMINATED BY ' ';
导入导出数据报错The MySQL server is running with the --secure-file-priv option解决办法
1. 参数值对应限制。
mysql>SHOW VARIABLES LIKE "secure_file_priv";
secure_file_prive=null 不允许导入导出
secure_file_priv=/tmp/ 限制导入导出只能发生在/tmp/目录下
secure_file_priv= 允许导入导出
2. 查找mysql路径
which mysql
3. 查看配置文件路径
/usr/local/mysql/bin/mysql --verbose --help|grep -A 1 options
就会出现以下信息:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
服务器首先读取的是/etc/my.cnf文件,如果前一个文件不存在则继续读/etc/mysql/my.cnf文件,如果还不存在依次向后查找。
比如我的在服务器上是 /etc/my.cnf
4. 修改配置文件
编辑/etc/my.cnf文件,在[mysqld]下添加条目:
secure_file_priv =
local-infile=0
5. 重启mysql服务器即可
service mysql stop
service mysql start