MySQL学习3–MySQL5.1的启动和停止

Mysql启动的4种方法

  1. mysqld
    1. mysqld是MySql服务器进程;
    2. mysqld启动时读取配置文件中的[mysqld]和[server]节点
    3. 我们可以手动的调用mysqld(查看参数:mysqld –verbose –help),但是我们一般只在调试的时候才这么做,如果手动启动的话,错误消息会打印到终端屏幕上而不是错误日志文件中;
    4. 默认读取配置文件的顺序是:
      1. /etc/my.cnf;
      2. /etc/mysql/my.cnf;
      3. /usr/local/mysql/etc/my.cnf;
      4. ~/.my.cnf;
      5. 依次读取后面配置文件中的的项会覆盖掉前面;
    5. 启动方式:$MYSQL_HOME/libexec/mysqld –defaults-file=./my.cnf –user=mysql;
    6. 连接方式:
      1. mysql –defualts-file=./my.cnf
      2. mysql -S /tmp/mysql.sock
  2. mysqld_safe
    1. mysqld_safe读取配置文件的[mysqld],[server]和[mysqld_safe]节点,为了向后兼容,也会读取[safe_mysqld]节点,尽管你应该重命名[mysqld_safe]节点在MySql5.1的安装过程中;
    2. mysqld_safe是一个可以调用mysqld进程的shell脚本,它可以设置错误日志,然后调用并监控mysqld进程,如果mysqld进程异常终止(kill -9 pid)的话,则mysqld_safe可以重新启动它;
    3. 启动方式:$MYSQL_HOME/lib/mysqld_safe –defaults-file=./my.cnf –user=mysql &;
    4. 连接方式:
      1. mysql –defualts-file=./my.cnf
      2. mysql -S /tmp/mysql.sock
  3. mysql.server
    1. MySql的分发版本在Unix上包含了一个叫mysql.server的脚本,它可以用于像Linux和Solaris的OS,以至于能够使用System V-style的方式运行目录来启动和关闭系统服务.它同样可以被用于Mac OS X系统上MySql的开机项;
    2. 存放的目录有:
      1. $MYSQL_HOME/share/mysql/mysql.server
      2. mysql-VERSION/support-files/mysql.server
    3. mysql.server读取配置文件的[mysql.server]和[mysqld]节点,为了向后兼容,它也读取[mysql_server]节点,尽管你应该重命名此节点在使用MySql5.1时;
    4. 它会调用mysqld_safe进程;
    5. 启动方式:
      1. cd $MYSQL_HOME/share/mysql/mysql.server start(stop/restart/reload/force-reload/status)
      2. cp $MYSQL_HOME/share/mysql/mysql.server /etc/rc.d/init.d/mysql;chkconfig –add mysql;service mysql start;
    6. 连接方式:
      1. mysql –defualts-file=./my.cnf
      2. mysql -S /tmp/mysql.sock
  4. mysqld_multi
    1. mysqld_multi是用来管理多个在不同的Unix socket文件和TCP/IP端口监听的mysqld进程的,它可以启动,停止和报告它们当前的状态,MySql Instance Manager是一个具有选择意义的多实例管理服务;
    2. 配置方法:
      1. 创建多实例的数据文件(有几个实例创建几个数据文件目录):>mkdir $MYSQL_HOME/data2;
      2. 修改数据文件目录的访问权限:>chown -R mysql:mysql data2;
      3. 分别初始化各个实例:>mysql_install_db –basedir=$MYSQL_HOME –datadir=$MYSQL_HOME/data2 –user=mysql;(初始化时指定basedir和datadir而不是从配置文件中读取)
      4. 编辑配置文件:添加[mysqld_multi]节点和多个[mysqldxxxx]节点;
      5. 启动实例:>mysqld_multi –defaults-file=./my.cnf start 3306;
      6. 连接方式:
        1. mysql -u root -P 3306 –protocol=tcp;
        2. mysql -S /tmp/mysql3306.sock
      7. 添加有关闭服务权限的用户:>grant shutdown on *.* to “shutdown_user”@”localhost” identified by “pwd” with grant option;(查看授权语句:>show grants for root@localhost;)
      8. 停止服务:>mysqld_multi –defualts-file=./my.cnf stop 3306;
      9. 日志文件存放在:$MYSQL_HOME/share/mysqld_multi.log文件中(mysql5.5中$MYSQL_HOME/data/mysqld_multi.log文件中);
关闭mysql数据库服务器:>mysqladmin shutdown;
查看mysql服务器是否否启动:>mysqladmin ping;
连接MySql
  1. 交互协议
    1. TCP/IP:支持本地连接和远程连接,支持所有的操作系统,除非指定–skip-networking选项;
    2. Unix Socket File:仅支持本地连接,仅支持Unix系统;
    3. Named Pipe:仅支持本地连接,仅支持Windows系统,需要使用-nt的版本(mysql-nt or mysql-max-nt),此方式默认禁止,如果要开启Named Pipe方式连接必须启动-nt版本的服务器并加上–enable-named-pipe选项;
    4. Shared Memory:仅支持本地连接,仅支持Windows系统,默认禁止,如果要开启需要添加–share-memory选项;
  2. 客户端工具
    1. mysql:是一个向服务器发送SQL语句的一般用途的客户端工具,也包含了一些管理的功能;
    2. mysqladmin:是一个帮助管理服务器的管理命令行客户端;
    3. mysqlimport:提供一个LOAD DATA INFILE语句的接口,帮助导入数据;
    4. mysqldump:是一个倾倒数据库和表结构及内容的客户端,主要用于备份和拷贝数据库到其它的机器;
 
 
 
 
 
./my.cnf文件:
[mysqld_multi]
mysqld     = /usr/local/mysql/bin/mysqld_safe     — 启动服务的进程
mysqladmin = /usr/local/mysql/bin/mysqladmin    — 关闭服务的进程
user       = shutdown_user                        — 有关闭服务器权限的用户
password   = pwd                                  — 用户密码
 
[mysqld3306]
port      = 3306                                  — 监听端口号
socket    = /tmp/mysql3306.sock                   — socket文件
pid-file  = /tmp/mysql3306.pid                    — pid文件
basedir   = /usr/local/mysql                      — 实例基目录
datadir   = /usr/local/mysql/data                 — 实例数据文件目录
……                                            — 其它服务器参数

MySQL学习2–Linux下安装Mysql5.5数据库

Linux下安装Mysql5.5数据库
  1. 准备安装工具
    1. cmake:从Mysql5.5以后使用cmake编译,可以从www.cmake.org下载最新版本;
    2. GUN make:操作系统自带;
    3. gcc:操作系统自带;
    4. perl:操作系统自带;
    5. libncurses5-dev(ncurses-devel):运行cmake必须的包,如果没有安装会报错.
  2. 安装cmake:
    1. 解压压缩包:>tar -zxvf cmake-VERSION.tar.gz;
    2. 进入到cmake的解压缩目录,执行./configure命令生成makefile;
    3. 执行>make;make install;命令生成安装软件并安装cmake;
    4. 软件安装到了/usr/local/share/cmake-2.8/目录下,执行文件在/usr/local/bin目录下;
  3. 安装ncurses-devel插件
    1. 在Debian和Ubuntu上的包名是libncurses5-dev;
    2. 在RHEL和其它版本上是ncurses-devel,执行>rpm -ivh ncurses-devel-VERSION.rpm安装;
    3. 如果不安装会出现以下错误;                                                                           
  4. 创建mysql用户:>useradd mysql;                                 
  5. 解压缩mysql5.5的源码包:>tar -zxvf mysql-VERSION.tar.gz;
  6. 进入目录mysql-VERSION目录;
  7. 执行cmake命令生成makefile(MyISAM,MERGE,MEMBER和CSV四种引擎默认静态编译);
  8. 编译文件:>make;make install;mysql的安装目录下生成可执行文件,并自动创建了data文件(可以手动再创建一个logs目录,用来存放生成的日志文件,与数据目录不在同一块磁盘上,减小I/O并发),修改目录权限为mysql:>chown mysql:mysql data;                                      
  9. 拷贝配置文件:>cp ../mysql-VERSION/support-files/my-medium.cnf ./my.cnf                         
  10. 在配置文件下添加目录配置,指定数据文件的位置:                             
  11. 数据库的初始化,主要是数据库的创建,帮助文件的填充,用户文件的填充,执行:>./scripts/mysql_install_db –defaults-file=./my.cnf –user=mysql(在my.cnf配置文件中添加user参数,并且拷贝到/etc目录下就不用再加参数,执行>./scripts/mysql_install_db即可)           
  12. 启动服务器:>.bin/mysqld_safe –-user=mysql &;                         
  13. 修改MYSQL服务器root用户的密码:>./bin/mysqladmin –u root password ‘pwd’;            
  14. 登录:
    1. 如果没有设置root的密码,默认是空密码,使用>./bin/mysql就可以登录;
    2. 如果设置了root密码,则登录时要数据密码验证>./bin/mysql –uroot -p;
    3. 进入数据库后修改用户密码:update user set password=PASSWORD(‘123456′) where user=’root’;
  15. 把mysql添加到环境变量:
    1. 打开~root/.bash_profile文件;                                        
    2. 修改环境变量:>PATH=/usr/local/mysql/bin:$PATH,尽量把mysql的bin目录放在PATH的前面,使用mysql的工具的时候提高优先级,否则可能会使用系统预装的mysql的工具,造成版本不一致的错误,下图不准,修改时注意即可;                                                        
    3. 使环境变量立即生效:>. ./.bash_profile;                        
  16. 把配置文件放到默认读取的路径,并在配置文件中指定启动用户为mysql,添加开机启动:
    1. 拷贝文件到开机启动目录:cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld;
    2. 添加开机启动项:chkconfig –add mysqld;chkconfig mysqld on;
    3. 启动/关闭mysql服务:service mysqld start/stop;
— 编译参数;
/usr/local/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_TCP_PORT=3306
如果要使用其它字符集,要在安装完成后改变字符集:mysql>set names ‘gb2312’;
charset:gb2312 — collation:gb2312_chinese_cs

MySQL学习1–Linux下安装Mysql5.1数据库

1.创建mysql用户:>useradd mysql
graphic
2.解压缩mysql的源码安装包:>tar –zxvf mysql-VERSION.tar.gz (如果要校验完整性使用md5sum mysql-VERSION.tar.gz 把得到的md5值比较)
graphic
3.创建安装mysql软件的目录:>mkdir /usr/local/mysql
4.进入mysql源码包目录,并编译源码生成makefile文件(查看gcc的版本,使用gcc –version, 查看configure的命令可以进入mysql-VERSION目录使用./configure –help | less命令):
./configure –prefix=/usr/local/mysql \   — 安装路径
–without-debug \                         — 使用非DEBUG方式编译
–enable-thread-safe-client \             — 允许以客户端线程安全方式编译
–enable-assembler \                      — 允许使用汇编字符串处理函数
–enable-profiling \
–with-mysqld-ldflags=-all-static \       — 静态编译,把函数放在执行程序中
–with-client-ldflags=-all-static \
–with-charset=latin1 \                    — 系统默认字符集
–with-extra-charsets=utf8,gbk \          — 编译安装字符集
–with-mysqld-user=mysql \                — 指定运行mysqld的用户
–without-embedded-server \
–with-server-suffix=snda \               — 个性化定制,在系统版本后的后缀
–with-plugins=innobase,partition         —存储引擎
graphic
5.编译文件:>make;make install;mysql的安装目录下生成可执行文件
graphic
6.创建数据文件,并修改目录权限为mysql:mysql:>mkdir data;chown mysql:mysql data
graphic
7.拷贝配置文件:>cp ../mysql-VERSION/support-files/my-medium.cnf ./my.cnf
graphic
8.在配置文件下添加目录配置,指定数据文件的位置
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
graphic
9./var/run文件夹下创建mysqld目录并属于mysql:mysql
>cd /var/run
>mkdir mysqld
>chown mysql:mysql mysqld
graphic
10.数据库的初始化,主要是数据库的创建,帮助文件的填充,用户文件的填充,执行:>./bin/mysql_install_db –defaults-file=./my.cnf –user=mysql
graphic
11.启动服务器:>.bin/mysqld_safe –-user=mysql &
graphic
12.修改MYSQL服务器root用户的密码:>./bin/mysqladmin –u root password ‘pwd’
graphic
13.登录:
    1.如果没有设置root的密码,默认是空密码,使用>./bin/mysql就可以登录
    2.如果设置了root密码,则登录时要数据密码验证>./bin/mysql –uroot -p
graphic
mysql的稳定级别
1.alpha:表明发行包含大量未被彻底测试的新代码
2.beta:意味着该版本功能是完整的,并且所有的新代码被测试了,没有增加重要的新特征,应该没有已知的缺陷.当appha版本至少一个月没有出现报导的致命漏洞,并且没有计划增加导致已经实施的功能不稳定的新功能时,版本从alpha变为beta版本.
3.re:是发布代表,是一个发行了一段时间的beta版本,看起来应该运行正常,只增加了很小的修复.
4.ga:如果没有后缀,这意味着该版本已经在很多地方运行一段时间了,而且没有非平台特性的缺陷报告.
Mysql源码目录,主要包括客户端代码,服务端代码,测试工具和其他库文件
1.BUILD:各种平台的编译脚本,可以用来制作各种平台的二进制版本
2.client:客户端目录(mysql.cc, mysqadmin.ccl)
3.docs:文档目录
4.storage:存储引擎目录,实现了handler抽象接口,主要包含一下目录:
     1.innobase
     2.myisam
     3.myisammrg
     4.heap
     5.cvs
     6.archive
     7.federated
     8.ndb
     9.blackhole
5.mysys:mysql为了实现跨平台对系统库封装
6.sql:数据库主程序目录(sql_insert.cc, sql_update.cc, ..),存储引擎接口(handler.cc, handler.h)