mysql 5.5.8要使用cmake编译
1)创建用户
# useradd -r -s /sbin/nologin mysql
# id mysql
uid=101(mysql) gid=101(mysql) groups=101(mysql)
# chown -R mysql.mysql /data/mysql/

说明:
# which cmake
/usr/local/bin/cmake

2)编译
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-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

3)初始化mysql
# chown -R root:mysql ./*
# scripts/mysql_install_db --user=mysql --datadir=/data/mysql/

4)配置文件
# cp support-files/my-large.cnf /etc/my.cnf
在[mysqld]中增加,指定数据库的路径
datadir = /data/mysql

5)服务脚本
# cp support-files/mysql.server /etc/init.d/mysqld

6)测试启动
# service mysqld restart

安装完成后注意事项

1)删除匿名用户(否则导致系统漏洞)
mysql> use mysql;
mysql> select user,host,password from user;
其中有两个匿名用户
  1. +------+-----------------------+-------------------------------------------+
  2. | user | host                  | password                                  |
  3. +------+-----------------------+-------------------------------------------+
  4. | root | localhost             | *A3CD8B69C29498EBAAAFC325115D21B6A630A9F9 |
  5. | root | localhost.localdomain | *A3CD8B69C29498EBAAAFC325115D21B6A630A9F9 |
  6. | root | 127.0.0.1             | *A3CD8B69C29498EBAAAFC325115D21B6A630A9F9 |
  7. | | localhost | |
  8. | | localhost.localdomain     |                                                 |
  9. +------+-----------------------+-------------------------------------------+
mysql> drop user ''@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> drop user ''@'localhost.localdomain';
Query OK, 0 rows affected (0.00 sec)

2)为root用户增加密码(在mysql客户端中,命令不区分大小写)
方法1
# mysqladmin -u USERNAME -h HOSTNAME password 'NEW_PASS' -p
方法2
mysql> SET PASSWORD FOR 'USERNAME'@'HOST'=PASSWORD('new_pass'); 
方法3
mysql> update user set password=password('hiayng') where user='root';

3)在家目录下建立如下文件,注意权限,可以免输入密码
[client]
user=root
password=hiyang
host=127.0.0.1

C/S通信方式
在同一台主机 使用mysql.socket通信
在不同主机TCP/IP通信


MyISAM存储的表包含3个文件
    .frm:表结构定义文件
    .MYD:表数据
    .MYI:表索引

InnoDB存储的表包含3个文件
    所有表共享一个表空间文件;
    建议:每表一个独立的表空间文件;但有些新特性不支持
    .frm: 表结构
    .ibd: 表空间(表数据和表索引)

为每个表设置独立的表空间
1)查看,innodb_file_per_table未打开
  1. mysql> show variables like "%innodb_file%";
  2. +--------------------------+----------+
  3. | Variable_name | Value |
  4. +--------------------------+----------+
  5. | innodb_file_format | Antelope |
  6. | innodb_file_format_check | ON |
  7. | innodb_file_format_max | Antelope |
  8. | innodb_file_per_table | OFF |
  9. +--------------------------+----------+
2)编辑配置文件
# vim /etc/my.cnf
在[mysqld]下增加
  1. innodb_file_per_table = 1
3)测试
将测试reload不会生效,必须重启
  1. # service mysqld restart
如下
mysql> show variables like "%innodb_file%";
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| innodb_file_format       | Antelope |
| innodb_file_format_check | ON       |
| innodb_file_format_max   | Antelope |
| innodb_file_per_table    | ON       |
+--------------------------+----------+


创建InnoDB表(5.5.8后默认创建表是InnoDB格式的)
mysql> create database mydb;
mysql> use mydb;
Database changed
mysql> create table test_tb(id int not null,name char(30));

# ls ./mydb
db.opt  test_tb.frm  test_tb.ibd
# 当前表使用的字符集和排序规则
# cat db.opt 
default-character-set=utf8
default-collation=utf8_general_ci