• MySQL 数据迁移


    一、导出数据库:

    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

  • 相关阅读:
    DataGrid内容导出Excel文件(C#)
    IE无法查看源文件原因及解决办法
    通过Internet访问内网中的服务器
    工欲善其事,必先利其器——图文并茂详解VisualStudio使用技巧
    Flash中对动态文本框使用遮罩
    Flash中XML跨域访问数据的规则
    Google导航代码
    信息竞赛小结
    第一天,开始系统学习 void
    浅析各种数据类型的取值范围 void
  • 原文地址:https://www.cnblogs.com/maruko/p/10877080.html
Copyright © 2020-2023  润新知