如何重设MySQL密码

翻译自MySQL 5.5 Reference Manual

如果你没有为MySQL设置root密码,作为root连接此服务器时不需要密码。不过,这是不安全的。Section 2.11.2, “Securing the Initial MySQL Accounts”讲解了如何设置密码。

如果你知道root密码,想改变它,参阅Section 13.7.1.6, “SET PASSWORD Syntax”

如果你先前设置了root密码,但忘记了,可以设置一个新密码。下述章节提供了在Windows和Unix系统,以及任意系统中的处理方法。

1 重设root密码:Windows系统

在Windows下,使用这些步骤重设所有MySQL root账户:

  1. 使用Administrator账户登录系统。
  2. 如果MySQL正在运行,把它停掉。如果作为Windows服务运行,打开服务管理器:在“开始”菜单,选择“控制面板”,再选择“管理工具”,然后选“服务”,在列表中找到MySQL服务,把它停掉。
    如果没有作为服务运行,你可能需要使用“任务管理器”强制停止它。
  3. Continue reading ‘如何重设MySQL密码’ »

点击量:51

MySQL同步常用管理任务

翻译自MySQL 5.5 Reference Manual

同步设置好并开始运行后,并不需要许多日常管理操作。取决于同步环境,你会希望偶尔、每天甚至更频繁地检查每一从服务器的同步状态。

1 检查同步状态

管理同步过程的最常用任务是确保同步正在运行并且主服务器和从服务器之间没有发生错误。完成这一任务主要通过在每一从服务器上执行SHOW SLAVE STATUS语句:

mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: master1
                  Master_User: root
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
          Read_Master_Log_Pos: 931
               Relay_Log_File: slave1-relay-bin.000056
                Relay_Log_Pos: 950
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
 Continue reading ‘MySQL同步常用管理任务’ »

点击量:27

MySQL同步实现细节

翻译自MySQL 5.5 Reference Manual

MySQL同步是使用三个线程实现的,一个在主服务器上,两个在从服务器上:

  • 二进制日志转储线程(Binlog dump thread)。当从服务器连接时,主服务器创建一个线程用来把二进制日志的内容发给从服务器。在主服务器SHOW PROCESSLIST的输出信息中,它被显示为Binlog Dump。
    binlog dump线程在主服务器的二进制文件上取得一个锁(acquires a lock),用来读取每一个要发给从服务器的事件。读取事件后,锁便会被释放,而不管事件有没有发送给从服务器。
  • 从服务器I/O线程(Slave I/O thread)。当从服务器运行START SLAVE语句时,会创建一个I/O线程。这个I/O线程会连接主服务器,要求主服务器发送记录在二进制日志中的数据库更新信息。
    从服务器的I/O线程读取主服务器Binlog Dump线程发过来的数据库更新信息,并把它们拷贝到本地文件,也就是从服务器的中继日志(relay log)中。
    这一线程的状态,在SHOW SLAVE STATUS的输出信息中显示为Slave_IO_running,在SHOW STATUS的输出信息中显示为Slave running。
  • 从服务器SQL线程(Slave SQL thread)。从服务器读取I/O线程生成的中继日志,并执行包含在日志中的事件。

在上面的描述中,每个主/从服务器连接都有3个线程。如果一个主服务器有多个从服务器,它会给每个连接着的从服务器都创建一个binlog dump线程。每一个从服务器都有自己的I/O和SQL线程。

Continue reading ‘MySQL同步实现细节’ »

点击量:41

为MySQL生成SSL证书和密钥

MySQL支持SSL通信,不过需要自行生成所需要的证书和密钥。

生成过程中请根据提示提供相应的信息。如果证书只是用来测试,一路回车即可;如果在实际环境中使用,尽量提供有意义的信息。如果某个信息要留空,可以输入英文句号(.)。请自行保存生成过程中所输入的证书密码。

1 准备工作

创建干净的环境:

$ rm -rf newcerts
$ mkdir newcerts && cd newcerts

2 生成CA证书

需要注意,CA证书的Comman Name不能与服务器请求文件和客户端的请求文件的Comman Name相同,否则证书验证阶段会报类似“error 18 at 0 depth lookup:self signed certificate”的错误。命令如下:

$ openssl genrsa 2048 > cakey.pem
$ openssl req -new -x509 -nodes -days 3600\
 -key cakey.pem -out cacert.pem

Continue reading ‘为MySQL生成SSL证书和密钥’ »

点击量:225

设置MySQL数据库同步

严格说来,MySQL的数据库同步不能叫“同步”,因为它是单向的,只能从主服务器(master)到从服务器(slave),官方文档称之为“replication(复制)”。

通过同步,可以自动备份数据库到另一台机器;可以负载均衡,把写操作放在主服务器,读操作分散在从服务器;还可以在主服务器故障时,临时进行切换,故障排除后再切回来……当然,本文不会说这么多内容,涉及到的,只是如何设置同步。

1 系统环境

1.1 主服务器

Debian7,MySQL5.5。MySQL使用MyISAM存储引擎,关闭InnoDB存储引擎。

若用到InnoDB的数据库,其同步设置会有差异,本文不涉及。mysql -u root -p登入数据库,然后执行SHOW TABLE STATUS FROM database查看database数据库使用何种存储引擎。

1.2 从服务器

Debian7,MySQL5.5。MySQL使用MyISAM存储引擎,关闭InnoDB存储引擎。

2 准备工作

2.1 主服务器设置

编辑/etc/mysql/my.cnf,在[mysqld]部分,根据下面内容添加或修改相应选项。

 Continue reading ‘设置MySQL数据库同步’ »

点击量:78