mysql 特性
- Speed
- 完全多线程
- 查询缓存
- Reliablity
- Scalability (伸缩性)
- Ease of use
- Protability and Standards Compliance
- Multiuser Support
- Internationalization
- Wide Application Support
- C, C++, Java, Perl, PHP, Python, Ruby
- JDBC, ODBC, .NET
- Open Source
Product Family
- Mysql Server(mysqld, mysql)
- Community
- Enterprise
- Mysql Cluster
- Mysql Proxy
- Mysql Adminitrator
- Mysql Query Browser
- Mysql Workbench
- Mysql Migration Toolkit
- Mysql Embedded Server
- Mysql Dribers and Connectors
Mysql 逻辑架构
MySQL 基本组件
MySQL安装
安装方式:
- 源码编译
- rpm
- 二进制包
MySQL编译安装
编译安装MySQL-5.5
cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译。
编译安装MySQL-5.5
一、安装cmake
跨平台编译器
# tar xf cmake-2.8.8.tar.gz
# cd cmake-2.8.8
# ./bootstrap
# make
# make install
二、编译安装mysql-5.5.33
- 使用cmake编译mysql-5.5
cmake指定编译选项的方式不同于make,其实现方式对比如下:
./configure cmake .
./configure --help cmake . -LH or ccmake .
指定安装文件的安装路径时常用的选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc
默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
若要明确指定不编译某存储引擎,可以使用类似如下的选项:
-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
-DWITH_READLINE=1
-DWITH_SSL=system
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
其它常用的选项:
-DMYSQL_TCP_PORT=3306
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DENABLED_LOCAL_INFILE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_DEBUG=0
-DENABLE_PROFILING=1
如果想清理此前的编译所生成的文件,则需要使用如下命令:
make clean
rm CMakeCache.txt
- 编译安装
# groupadd -r mysql
# useradd -g mysql -r -d /mydata/data mysql
# tar xf mysql-5.5.33.tar.gz
# cd mysql-5.5.33
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
# make
# make install
mysql初始化
提供配置文件
配置文件.cnf
集中式的配置:多个应用程序共用的配置文件
[mysqld]
[mysqld_safe]
[client]
查看musql参数:
# /usr/local/mysql/bin/mysqld --help --verbose | head -20
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
使用配置文件的方式
- 它依次查找每个需要查找的文件,结果是所有文件并集;
- 如果某参数在多个文件中出现多次,后读取的最终生效;
# /usr/local/mysql/bin/mysqld --help --verbose
1、显示mysqld程序启动时可用的选项,通常都是长选项
2、显示mysqld的配置文件中可用的服务变量
mysql> SHOW GLOBAL VARIABLES
mysql> SHOW SESSION VARIABLES
第二个操作
- 删除所有匿名用户
mysql> DROP USER ''@'localhost';
mysql> DROP USER ''@'www.drfung.com';
用户帐号由两部分组成:username@host
host还可以使用通配符:
%: 任意长度的任意字符
_: 匹配任意单个字符
- 给所有的root用户设定密码:
第一种方式:
mysql> SET PASSWORD FOR username@host = PASSWORD('your_passwrod');
第二种方式:
mysql> UPDATE user SET password = PASSWORD('your_password') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
第三种方式:
# mysqladmin -uUserName -hHost password 'new_password' -p
# mysqladmin -uUserName -hHost -p flush-privileges
访问MySQL
mysql client <--mysql protocol--> mysqld
mysqld接收连接请求:
- 本地通信:客户端与服务器端位于同一主机,而且还要基于127.0.0.1(localhost)地址或lo接口进行通信;
- Linux OR Unix: Unix Sock, /tmp/mysql.sock, /var/lib/mysql/mysql.sock
- Windows: memory, pipe
- 远程通信:客户端与服务器位于不同的主机,或在同一主机便使用非回环地址通信
- TCP socket
客户端工具
包括:mysql, mysqladmin, mysqldump, mysqlcheck
[client]中的配置对这些客户端生效
通行的选项:
-u, --user=
-h, --host=
-p, --password=
--protocol={tcp|socket|memory|pipe}
--port=
--socket= 例如:/tmp/mysql.sock
mysql监听的端口: 3306/tcp
非客户端类的管理工具:myisamchk(检测工具), myisampack(打包工具)
mysql工作模式:
- 交互式模式
mysql>
- 脚本模式
mysql < /path/to/mysql_script.sql
mysql交互式模式:
- 客户端命令
mysql> help
mysql> \?
\c
\g
\G
\q
\!
\s
\. /path/to/mysql_script.sql
- 服务器端命令:需要命令结束符,默认为分号(;)
获取mysql帮助
mysql> help contents
mysql> help Keryword
mysql命令行选项:
--compress
--database=, -D
-H, --html:输出结果为html格式的文档
-X, --xml: 输出格式为xml
--sate-updates: 拒绝使用无where子句的update或delete命令;
mysql命令提示符:
mysql> 等待输入命令
->
'>
">
`>
/*>
mysql的快捷键:
Ctrl + w: 删除光标之前的单词
Ctrl + u: 删除光标之前至命令行首的所有内容
Ctrl + y: 粘贴使用Ctrl+w或Ctrl+u删除的内容
Ctrl + a: 移动光标至行首
Ctrl + e: 移动光标至行尾
mysqldmin工具:
mysqladmin [options] command [arg] [command [arg]] ...
command:
create DB_NAME
drop DB_NAME
debug: 打开调试日志并记录于error log中;
status:显示简要状态信息
--sleep #: 间隔时长
--count #: 显示的批次
extended-status: 输出mysqld的各状态变量及其值,相当于执行“mysql> SHOW GLOBAL STATUS”
variables: 输出mysqld的各服务器变量
flush-hosts: 清空主机相关的缓存:DNS解析缓存,此前因为连接错误次数过多而被拒绝访问mysqld的主机列表
flush-logs: 日志滚动,二进制日志和中继日志
refresh: 相当于同时使用flush-logs和flush-hosts
flush-privileges:
reload: 功能同flush-privileges
flush-status: 重置状态变量的值
flush-tables: 关闭当前打开的表文件句柄
flush-threads:清空线程缓存
kill: 杀死指定的线程,可以一次杀死多个线程,以逗号分隔,但不能有多余空格
password: 修改当前用户的密码;
ping:
processlist:显示mysql线程列表
shutdown: 关闭mysqld进程;
start-slave
stop-slave: 启动/关闭从服务器线程
GUI客户端工具:
- Navicat for mysql
- Toad for mysql
- mysql front
- sqlyog
- phpMyAdmin
总结:mysql初始化,mysql配置文件读取次序,mysql初始用户,mysql客户端命令,mysqldmin,GUI