源码编译安装mysql

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了源码编译安装mysql相关的知识,希望对你有一定的参考价值。

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 :mysql . (与二进制安装略有不同,二进制安装时,属主和属组为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

安装完成后注意事项

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‘;
select user,host,password from user;

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
如下
  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    | ON       |
  9. +--------------------------+----------+


创建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





以上是关于源码编译安装mysql的主要内容,如果未能解决你的问题,请参考以下文章

Linux下源码安装编译mysql数据库

MySQL源码编译安装

MySQL源码编译安装

源码编译安装mysql

linux下源码编译安装mysql详解

Linux安装MySQL(源码安装)