MySQL 数据迁移

一、导出数据库:

1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录

如我输入的命令行:cd D:\Program Files\MySQL\MySQL Server 5.5\bin

(或者直接将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 '\n';

导入导出数据报错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

 

posted @ 2019-05-16 17:50  小丸  阅读(11800)  评论(0编辑  收藏  举报