MySQL 常用命令

一、变更或重置 root 密码

1.设置初始密码或者修改原密码
    a. 直接进入 MySQL 安装目录 bin 子目录下运行 mysqladmin 命令
    linux 下如下执行:
    [root@janwer root]# /usr/local/mysql/bin/mysqladmin -uroot -p原来的密码 password 新密码
也可以这样
    [root@janwer root]# /usr/local/mysql/bin/mysqladmin -uroot -p password 新密码
                                    Enter password: ****** (输入你原来的密码)
   注意: 新密码不要这样写 ' 123' ,不然密码就不是 123 而是 ' 123' 。

  b.可在 MySQL 的 bin 目录下运行 mysql 进入 MySQL 修改
  [root@janwer root]# /usr/local/mysql/bin/mysql -uroot -p (原来的密码 )
  mysql>use mysql
  Database changed
  mysql>UPDATE user SET PASSWORD=PASSWORD(' 新密码' ) WHERE USER=' root' AND HOST=' localhost' ;
  Query OK, 1 row affected (0.05 sec)
  Rows matched: 1  Changed: 1  Warnings: 0
  mysql>flush privileges;
  mysql>quit
  Bye


2. 重置密码
下面分三步说明操作步骤:
1>.停止MySQL
Linux 下 , 运行killall -TERM mysqld
Windows 下,控制面板-->管理工具-->服务-->MySQL 将其停止。

2>.以安全模式启动MySQL
Linux 下,运行/usr/local/mysql/bin/ mysqld_safe --skip-grant-tables &
Windows 下,在命令行下运行 MySQL 安装目录/bin/ mysqld-nt.exe --skip-grant-tables

3>.进入 MySQL
完成上面两步后,就可以不用密码进入 MySQL 了
Linux/Windows下,MySQL安装目录/bin/mysql -u root -p


二、备份或恢复数据库

备份数据 ,比如我要备份 MySQL 中已经存在的名为 voice 的数据库,要用到命令 mysqldump
Linux命令格式如下:
[root@janwer root]# /usr/local/mysql/bin/mysqldump -uroot -p(密码)  gom(数据库) --add-drop-table > /opt/backup/mysql/voice.sql

恢复备份 , 比如我们要把在 /opt/backup/mysql/voice.sql 这个目录中的 voice.sql 备份,导入名为 message 的数据库中,应该如下操作 :
[root@janwer root]# /usr/local/mysql/bin/mysql -uroot -p(密码) < /opt/backup/mysql/voice.sql

自动备份 ,MySQL 定期备份是一项重要的工作,下面介绍个 crontab 自动调度脚本。

可以先用whereis command查看mysqldump命令的路径。
[root@janwer root]# vi /etc/profile.d/mysql_backup.sh
filename=$(date +%Y%m%d)
mysql的bin路径/mysqldump opt(数据库名) --add-drop-table -u数据库用户名 -p用户密码 | gzip > /opt/backup/mysql/db_opt_$filename.gz

为脚本添加执行权限
[root@janwer root]# chmod +x /etc/profile.d/mysql_backup.sh
[root@janwer root]# crontab -e
01 3 * * * /etc/profile.d/mysql_backup.sh
[root@janwer root]# /sbin/service crond reload
说明: 请把用中文描述的换成实际环境的变量值,把prefix_name 换成你的备份文件前缀标识。如上例,将每天零晨3点自动备份 MySQL 数据库,并以 gzip 压缩方式存储,文件名为 db_voice_20080101.gz 的形式。我的 系统 是Centos 5 ,各种 Linux 的 crontab 调用可能略有不同,请根据自身情况来作调整。

 

三、查看系统变量,状态和进程
1.查看系统全局或会话变量
show variables; or show session variables;
默认情况下(使用session ),这两种命令是等价的,要查看全局变量,需指定 global 关键字,如下:
show global variables;

如果要指定查看某类型的系统变量,可用如下方式:
show variables like '%test%' or show session variables lile '%test%';
上面将查询包含test 字符串的session 变量

2.查看系统状态
mysql> show status;


3.查看系统进程
mysql> show processlist;
---- ------ ----------- ------ --------- ------ ------- ------------------
| Id | User | Host | db | Command | Time | State | Info |
---- ------ ----------- ------ --------- ------ ------- ------------------
| 16 | root | localhost | NULL | Query | 0 | NULL | show processlist |
---- ------ ----------- ------ --------- ------ ------- ------------------
1 row in set (0.00 sec)


四、常用管理命令
mysql   基本文本的,显示和使用的 mysql 数据库
mysqladmin 创建和维护 mysql 数据库
isamchk   修复、检查和优化 .ism 后缀的数据库文件
mysqldump   备份数据库
myisamchk   修复 .myi 后缀的数据库文件
 
比如我们要检查名为 voice 数据库的 .myi 数据库表是否存在问题
先把 mysqld 服务器停下来
[root@janwer root]# /usr/local/mysql/share/mysql.server stop
然后执行
[root@janwer root]# /usr/local/mysql/bin/myisamchk /usr/local/mysql/var/voice/*.MYI
上面的命令是检查所有 在 /usr/local/mysql/var/voice/ 目录 下的 .myi 数据文件,如果有问题,应该用 –r 参数来修复
[root@janwer root]# /usr/local/mysql/bin/myisamchk -r /usr/local/mysql/var/voice/*.MYI

 

mysqlshow 命令
显示用户选择的数据库和表
[root@janwer root]# /usr/local/mysql/bin/mysqlshow -uroot -p 密码 数据库名
比如我查看名为 voice 的数据库
[root@janwer root]# /usr/local/mysql/bin/mysqlshow -u root -p 密码 voice


五、其它常用命令
1.显示结构或描述信息
显示表的结构
show columns from table_name;
描述表的结构
describe table_name;

2.创建用户并给予权限
GRANT ALL ON database_name.* TO database_user@HostName IDENTIFIED BY 'password';

3.一些有用的SQL命令
清空数据表
truncate table table_name;

更改数据表的名称
alter table old_table_name rename new_table_name;

在不进数据库的情况下执行 mysql 语句
mysql -u username -pusername database -e "msyql excute sectence";
 
4 .导入导出
导出一个表
mysqldump -u 用户名 -p密码 数据库名 表名 > 导出的文件名

导出一个数据库结构
mysqldump -u用户名 -p密码 -d --add-drop-table 数据库名 > /opt/数据库结构.sql
-d 没有数据 --add-drop-table 在每个 create 语句之前增加一个 drop table

导入数据库
mysql>source ./sql文件.sql

 

5. 设置MySQL数据库默认编码

编辑 vi /etc/my.cnf

在[mysqld]节下加入
lower_case_table_names=1
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
#加入以下注释属性,MySQl LOG将报错
#default-character-set=utf8
#default-collation=utf8_general_ci
[client]
default-character-set=utf8

 

查看修改结果

mysql>SHOW VARIABLES LIKE '%character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

 

你可能感兴趣的:(数据结构,sql,linux,mysql,SQL Server)