6. MySQL 基础

6.1. 基本操作

连接数据库:

$ mysql -uroot -p

显示数据库:

mysql > show databases;

创建数据库:

mysql > create database fupiter;

切换数据库:

mysql > use fupiter;

删除数据库:

mysql > drop database fupiter;

6.2. 重置 root 用户密码

方法一、使用 mysqladmin:

mysqladmin -u root password 'newpassword'

password后面的引号不是必须的,不过如果密码包含空格或者一些特殊的符号,需要用引号。需要输入原 root 的密码。

方法二、利用mysql SET PASSWORD命令:

mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpassword');

方法三、使用重置脚本:

wget http://soft.vpser.net/lnmp/ext/reset_mysql_root_password.sh
sh reset_mysql_root_password.sh

适合 lnmp 或 MySQL 管理脚本在 /etc/init.d/mysql 且 mysql 安装在 /usr/local/mysql/ 的。否则需要修改脚本后再执行 sh reset_mysql_root_password.sh

方法四、安全模式重置

  1. 编辑 /etc/my.cnf 或者 /etc/mysql/my.cnf ,在 [mysqld] 的段中加上一句 skip-grant-tables

  2. 重启 mysql 服务

  3. 连接 mysql 并重置密码:

    $ mysql -uroot
    mysql> USE mysql ;
    mysql> UPDATE user SET Password = password ( 'new-password' ) WHERE User = 'root' ;
    
  4. 移除 my.cnf 中的 skip-grant-tables

  5. 重启 mysql 服务,收工。

6.3. 导出数据库

6.3.1. 命令行通过 mysqldump 导出

  1. 备份单个数据库:

    mysqldump --user=user --password=password --lock-all-tables dbname > backup.sql
    
  2. 备份多个数据库:

    mysqldump --user=user --password=password --lock-all-tables --databases dbname1 dbname2 > backup.sql
    
  3. 备份所有数据库:

    mysqldump --user=user --password=password --lock-all-tables --all-databases > backup.sql
    

--lock-all-tables 选项可以在备份期间锁定数据库防止出现变化,进而导致多个有关系的表不同步,比如A表需要引用B表,备份完A表后,B 表发生了变化,之后才备份了B表,这样数据库就乱了。

备份上百M的数据库也只用了几秒而已,所以这个选项对网站运行影响不大。

6.3.2. 使用 PhpMyAdmin 导出

比较简单,略。

6.4. 导入数据库

  1. 命令行通过 SQL 文件导入:

    mysql > use database;
    mysql > source d:/mysql.sql;
    
  2. 通过 PhpMyAdmin 导入

    这个就比较简单了,傻瓜化的。