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;
其中有两个匿名用户
+------+-----------------------+-------------------------------------------+
| user | host | password |
+------+-----------------------+-------------------------------------------+
| root | localhost | *A3CD8B69C29498EBAAAFC325115D21B6A630A9F9 |
| root | localhost.localdomain | *A3CD8B69C29498EBAAAFC325115D21B6A630A9F9 |
| root | 127.0.0.1 | *A3CD8B69C29498EBAAAFC325115D21B6A630A9F9 |
| | localhost | |
| |
localhost.localdomain | |+------+-----------------------+-------------------------------------------+
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未打开
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 | OFF |
+--------------------------+----------+
2)编辑配置文件
# vim /etc/my.cnf
在[mysqld]下增加
innodb_file_per_table = 1
3)测试
将测试reload不会生效,必须重启
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