MySQL管理_数据库启动与关闭

  MySQL数据库服务器通常指的的是mysqld,而命令行mysql则是mysql客户端程序,这两个概念通常容易混淆。通常启动mysql服务器即是启动mysqld进程,mysqld启动后,可以通过mysql连接到mysql服务器。本文主要描述了mysql服务器的几种启动方式以及如何关闭mysql服务器。

1.直接使用mysqld启动

  mysqld 即是mysql服务器,可以调用该命令直接启动mysql服务器
  mysqld 从配置文件中读取[mysqld]以及[server]选项组的内容,也可以通过直接在命令行跟随参数。
  mysqld服务器读取配置文件的顺序,对于有多个配置文件存在,且同一参数有多个值的情形,以最后一次读取为准。
      命令行跟随参数具有最高优先级

  1.1当前mysql服务器运行环境

[[email protected] ~]# cat /etc/issue
 Red Hat Enterprise Linux Server release 6.4 (Santiago)

1.1当前mysql服务器运行环境

  1.2查看mysqld启动时的缺省选项

[[email protected] ~]# mysqld --print-defaults
  mysqld would have been started with the following arguments:
  --socket=/tmp/mysql3306.sock --port=3306 --pid-file=/var/lib/mysql/my3306.pid --user=mysql --server-id=3306 --federated
 [root@rhel64a ~]# ps -ef|grep mysql
  root      2963  2840  0 14:10 pts/0    00:00:00 grep mysql

1.2查看mysqld启动时的缺省选项

  1.3查看mysqld启动配置文件的优先级

[[email protected] ~]# mysqld --verbose --help |grep -A 1 "Default options"
  Default options are read from the following files in the given order:
  /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

1.3查看mysqld启动配置文件的优先级

  1.4查看当前的my.cnf配置文件

 [[email protected] ~]# grep -v ^# /etc/my.cnf|head -n 7
  [mysqld]
  socket = /tmp/mysql3306.sock
  port = 3306
  pid-file = /var/lib/mysql/my3306.pid
  user = mysql
  server-id=3306
  federated

1.4查看当前的my.cnf配置文件

  1.5清空当前mysql服务器的错误日志文件

[[email protected] ~]# cat /dev/null>/var/lib/mysql/rhel64a.ycdata.net.err
  [[email protected] ~]# mysqld &           #启动mysqld服务器
  [1] 3480
  [root@rhel64a ~]# 2014-10-25 14:20:42 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
  Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
  2014-10-25 14:20:42 3480 [Note] InnoDB: Using atomics to ref count buffer pool pages
  2014-10-25 14:20:42 3480 [Note] InnoDB: The InnoDB memory heap is disabled
  2014-10-25 14:20:42 3480 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
  2014-10-25 14:20:42 3480 [Note] InnoDB: Memory barrier is not used
  2014-10-25 14:20:42 3480 [Note] InnoDB: Compressed tables use zlib 1.2.3
  2014-10-25 14:20:42 3480 [Note] InnoDB: Using Linux native AIO
  2014-10-25 14:20:42 3480 [Note] InnoDB: Using CPU crc32 instructions
  2014-10-25 14:20:42 3480 [Note] InnoDB: Initializing buffer pool, size = 128.0M
  2014-10-25 14:20:42 3480 [Note] InnoDB: Completed initialization of buffer pool
  2014-10-25 14:20:42 3480 [Note] InnoDB: Highest supported file format is Barracuda.
  2014-10-25 14:20:42 3480 [Note] InnoDB: 128 rollback segment(s) are active.
  2014-10-25 14:20:42 3480 [Note] InnoDB: Waiting for purge to start
  2014-10-25 14:20:42 3480 [Note] InnoDB: 5.6.21 started; log sequence number 1626087
  2014-10-25 14:20:42 3480 [Note] Server hostname (bind-address): ‘*‘; port: 3306
  2014-10-25 14:20:42 3480 [Note] IPv6 is available.
  2014-10-25 14:20:42 3480 [Note]   - ‘::‘ resolves to ‘::‘;
  2014-10-25 14:20:42 3480 [Note] Server socket created on IP: ‘::‘.
  2014-10-25 14:20:42 3480 [Note] Event Scheduler: Loaded 0 events
  2014-10-25 14:20:42 3480 [Note] mysqld: ready for connections.
  Version: ‘5.6.21‘  socket: ‘/tmp/mysql3306.sock‘  port: 3306  MySQL Community Server (GPL)l

1.5清空当前mysql服务器的错误日志文件

  1.6查询mysqld进程

  [[email protected] ~]# ps -ef|grep mysql|grep -v grep
  mysql    18240  2641  1 20:25 pts/2    00:00:00 mysqld
  [root@rhel64a ~]# mysql -uroot -pxxx -P3306 --protocol=tcp
  [email protected][(none)]> show variables like ‘version‘;
  +---------------+--------+
  | Variable_name | Value  |
  +---------------+--------+
  | version       | 5.6.21 |
  +---------------+--------+

1.6查询mysqld进程

2.mysql安全启动(mysqld_safe)

  mysqld_safe是一个shell 脚本,会调用mysqld启动mysql服务器,并监听服务器。
   如果mysqld进程异常终止,mysqld_safe将自动重启mysqld
   mysql_safe 从配置文件中读取[mysqld],[server],[mysqld_safe]等选项,为保证向后兼容,mysql_safe还读取[safe_mysql]选项。

  2.1使用mysqladmin来闭之前启动的mysql服务器

[[email protected] ~]# mysqladmin -uroot -pxxx shutdown -S /tmp/mysql3306.sock
 [[email protected] ~]# ps -ef|grep mysql
  root      4262  3418  0 14:40 pts/4    00:00:00 grep mysql

使用mysqladmin关闭之前启动的mysql服务器

  2.2使用mysqld_safe启动实例

[[email protected] ~]# mysqld_safe --user=mysql &
  [1] 4273
  [root@rhel64a ~]# 141025 14:40:34 mysqld_safe Logging to ‘/var/lib/mysql/rhel64a.ycdata.net.err‘.
  141025 14:40:34 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

使用mysqld_safe启动实例

  2.3  查看启动后的后台进程

[[email protected] ~]# ps -ef|grep mysql|grep -v grep #mysqld的进程为4438,其父进程为4273,即mysqld_safe
  root      4273  3418  0 14:40 pts/4    00:00:00 /bin/sh /usr/bin/mysqld_safe --user=mysql
  mysql     4438  4273  0 14:40 pts/4    00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql
    --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/rhel64a.ycdata.net.err
    --pid-file=/var/lib/mysql/my3306.pid --socket=/tmp/mysql3306.sock --port=3306

[root@rhel64a ~]# mysql -uroot -pxxx -P3306 --protocol=tcp
  [email protected][(none)]> system kill -9 4438  #强制kill mysqld进程
  [email protected][(none)]> /usr/bin/mysqld_safe: line 166:  4438 Killed    #下面的nohup为mysql启动进程
    nohup /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin
    --user=mysql --log-error=/var/lib/mysql/rhel64a.ycdata.net.err --pid-file=/var/lib/mysql/my3306.pid
    --socket=/tmp/mysql3306.sock --port=3306 < /dev/null >> /var/lib/mysql/rhel64a.ycdata.net.err 2>&1
  141025 14:42:29 mysqld_safe Number of processes running now: 0
  141025 14:42:29 mysqld_safe mysqld restarted  #提示该进程已经自动重新启动

2.3查看启动后的后台进程

  2.4校验mysqld是否已经成功重启

[email protected][(none)]> system ps -ef|grep mysql|grep -v grep
  root      4273  3418  0 14:40 pts/4    00:00:00 /bin/sh /usr/bin/mysqld_safe --user=mysql
  root      4517  3418  0 14:41 pts/4    00:00:00 mysql -uroot -px x -P3306 --protocol=tcp
  mysql     4553  4273  0 14:42 pts/4    00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql
  --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/rhel64a.ycdata.net.err
   --pid-file=/var/lib/mysql/my3306.pid --socket=/tmp/mysql3306.sock --port=3306

root@localhost[(none)]> select databases();
  ERROR 2013 (HY000): Lost connection to MySQL server during query #由于mysqld进程被杀掉,所以连接已经被断开

root@localhost[(none)]> connect  #重新连接
  Connection id:    1
  Current database: *** NONE ***

 root@localhost[(none)]> select database();
  +------------+
  | database() |
  +------------+
  | NULL       |
  +------------+

2.4校验mysqld是否已经成功重启

3.mysql(mysql.server)服务方式启动

  mysql.server为一个shell脚本,他会调用mysqld_safe,该脚本会读取配置文件的[mysql.server]以及[mysqld]选项。
  为向后兼容,也会读取[mysql_server]选项

  3.1首先使用mysqladmin关闭已存在的mysqld

[email protected][(none)]> system mysqladmin -uroot -pxxx shutdown -S /tmp/mysql3306.sock
  Warning: Using a password on the command line interface can be insecure.
  141025 14:47:18 mysqld_safe mysqld from pid file /var/lib/mysql/my3306.pid ended
  root@localhost[(none)]> exit
  Bye
  [1]+  Done                    mysqld_safe --user=mysql
[root@rhel64a ~]# ls -hltr /etc/init.d/mysql             #/etc/init.d目录下已经配置了mysql启动脚本,在安装时添加
  -rwxr-xr-x 1 root root 11K Sep 11 22:18 /etc/init.d/mysql       #如果为rpm方式安装会自动添加该启动脚本
[[email protected] ~]# /etc/init.d/mysql --help               #获取mysql启动脚本的使用帮助
  Usage: mysql  {start|stop|restart|reload|force-reload|status}  [ MySQL server options ]

3.1首先使用mysqladmin关闭已存在的mysqld

  3.2启动或关闭mysqld

[[email protected] ~]# /etc/init.d/mysql start                #启动mysqld
  Starting MySQL.[  OK  ]
[root@rhel64a ~]# /etc/init.d/mysql stop                 #停止mysqld
  Shutting down MySQL..[  OK  ]

3.2启动或关闭mysqld

  3.2缺省情况下mysql已经作为一个服务添加到系统目录已经配置了自启动,如下

[[email protected] ~]# chkconfig --list |grep mysql
  mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

root@localhost[(none)]> system ps -ef|grep mysql |grep -v grep
  root      5127     1  0 14:49 pts/4    00:00:00 /bin/sh /usr/bin/mysqld_safe
    --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/my3306.pid
  mysql     5306  5127  0 14:49 pts/4    00:00:07 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql
   --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/rhel64a.ycdata.net.err
   --pid-file=/var/lib/mysql/my3306.pid --socket=/tmp/mysql3306.sock --port=3306
  root      5340  3418  0 14:49 pts/4    00:00:00 mysql -uroot -px x -P3306 --protocol=tcp
  

自启动

  #通过服务的方式启动mysql服务器,mysql.server调用mysqld_safe,然后mysql_safe调用了mysqld
    #从上面的方式可知,无论何种启动方式,mysqld最终都会被调用。因为mysqld就是mysql服务器。

4.关闭mysql服务器

  在前面的演示中,我们已经使用了mysqladmin以及service方式来关闭实例。即可以通过这2种方式来关闭数据库。不再演示。
#获取mysqladmin命令行的帮助信息,如下包含shutdown
  [[email protected] ~]# mysqladmin --help|grep shutdown |grep server
    shutdown              Take server down

5.小结
  a、注意理解mysqld与mysql。mysqld为mysql服务器或者称之为服务器上的实例,用于提供客户端访问。mysql为客户端访问管理工具。
  b、可以通过三种方式启动mysql服务器(mysqld,mysqld_safe,service mysql start)
  c、对于mysqld_safe,service mysql start方式,总是通过调用mysqld_safe来启动mysqld进程,以防止mysqld意外宕掉而提供重启服务。
  d、可以通过mysqladmin shutdown以及service mysql stop来终止mysql服务器

时间: 2024-10-03 23:15:38

MySQL管理_数据库启动与关闭的相关文章

MySQL管理_数据库常用命令

1.数据库赋权 进入mysql数据库: mysql> use mysql; 给root用户设置新密码: mysql> update user set password=password("新密码") where user="root"; 刷新数据库 mysql> flush privileges; nagios监控 mysql> GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'nagiosshow'@

Linux系统中数据库启动和关闭&Basic SQL

第一步:使用oracle用户登录 第二步:在oracle用户下输入sqlplus /nolog 第三步:如需使用管理员权限,则输入connect /as sysdba 第四步:启动和关闭 startup startup nomount #只启动实例 startup mount   #打开控制文件 startup open    #打开数据文件和重做日志 shutdown shutdown normal        #不接受新的连接,需要等待所有的用户断开连接 shutdown immediat

Oracle——数据库启动与关闭

本文内容 服务器环境 客户端环境 概述 启动数据库 关闭数据库 补充 参考资料 本文说明 Oracle 数据库的启动和关闭,内容虽然基础,但是在数据库很多操作中都需要,因此,基础而重要,必须深入理解.比如,何种情况应该使用何种数据库加载模式,以及数据库文件打开模式. 服务器环境 Windows 2003 R2 Oracle11g 32位 客户端环境 Windows 2008R2 Oracle 11g 32位客户端 概述 若用 startup 命令启动数据库,执行的操作要经历三个不同的阶段: 实例

Oracle 数据库启动与关闭 各种方式详解整理

概述 只有具备sysdba和sysoper系统特权的用户才能启动和关闭数据库. 在启动数据库之前应该启动监听程序,否则就不能利用命令方式来管理数据库,包括启动和关闭数据库. 虽然数据库正常运行,但如果没有启动监听程序,客户端就不能连接到数据库. 在oracle用户下: 启动监听程序 lsnrctl start 关闭监听程序lsnrctl stop 查询监听程序状态lsnrctl status startup 支持参数 STARTUP options | upgrade_options optio

Oracle 11g 数据库启动和关闭

Oracles11数据库的启动状态 Oracle11g在启动的时候必须经过三个状态:NOMOUNT,MOUNT,OPEN. NOMOUNT: 此状态下只打开数据库实例,读取参数文件. MOUNT: 根据参数文件信息,打开控制文件.读取控制文件中的各种信息,如数据文件位置,日志文件路径,但是不打开数据文件. OPEN:打开数据文件,并进行一系列的检查工作. 启动数据库: [[email protected] oracle]$ sqlplus /nolog SQL> connect/as sysdb

关于数据库启动和关闭的例子

关于数据库的启动 : Oracle 的启动分为三个步骤;分别是启动实例,加载数据库 .打开数据库.(用户可以根据自己的实际需要来开启数据库) 语法是startup 1:nomount 模式 SQL> SQL> startup nomountORACLE instance started. Total System Global Area  830930944 bytesFixed Size                  2257800 bytesVariable Size         

oracle数据库启动及关闭

数据库关闭与启动: scn == system change number 数据库启动步骤 nomount----> mount---->open (1)第一阶段 SQL> startup nomount ORACLE instance started. Total System Global Area 7148580864 bytes Fixed Size    2214216 bytes Variable Size 3825206968 bytes Database Buffers

oracle数据库--启动和关闭

oracle--启动 oracle数据库的启动过程包含3个步骤:启动实例->加载数据库->打开数据库 分步骤启动过程可以对数据库进行不同的维护操作,对应我们不同的需求. 启动模式: 1.startup nomount 非安装启动 即启动实例不加载数据库,这种方式下启动可以执行:重建控制文件.重建数据库: 这种启动模式需要操作的文件:init.ora 读取init.ora文件,启动instance,即启动SGA和后台进程. 讲解:nomount的过程其实就是启动instance的过程,内存分配和

Oracle数据库启动和关闭

要了解Oracle数据库的启动和停止需要先了解"实例"(instance)和"数据库"(database)这两个名词的定义: 数据库(database):物理操作系统文件或磁盘(disk)的集合. 实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享. 这两个词有时可以互换使用,不过二者的概念完全不同.实例和数据库之间的关系是:数据库可以由多个实例mount和open,而实例可以在任何时间点mou