先到http://dev.mysql.com/downloads/mysql/下载一个mysql,我使用的版本是mysql5.1.53。接着解压。
安装步骤如下:
先执行官方的步骤:
- shell> groupadd mysql
- shell> useradd -g mysql mysql
- # Source-build specific instructions
- shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
- shell> cd mysql-VERSION
- shell> ./configure --prefix=/usr/local/mysql
- shell> make
- shell> make install
- # End of Source-build specific instructions
- shell> cd /usr/local/mysql
- shell> chown -R mysql .
- shell> chgrp -R mysql .
- shell> bin/mysql_install_db --user=mysql
- shell> chown -R root .
- shell> chown -R mysql var
- shell> cp support-files/my-medium.cnf /etc/my.cnf #optional
- shell> bin/mysqld_safe --user=mysql &
shell> groupadd mysql
shell> useradd -g mysql mysql
# Source-build specific instructions
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
# End of Source-build specific instructions
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> cp support-files/my-medium.cnf /etc/my.cnf #optional
shell> bin/mysqld_safe --user=mysql &
运行多个实例
执行
- bin/mysqld_multi --example
bin/mysqld_multi --example
会自动列出配置文件的模板,如:
- [mysqld_multi]
- mysqld = /usr/local/mysql/bin/mysqld_safe
- mysqladmin = /usr/local/mysql/bin/mysqladmin
- user = multi_admin
- password = my_password
- [mysqld2]
- socket = /tmp/mysql.sock2
- port = 3307
- pid-file = /usr/local/mysql/var2/hostname.pid2
- datadir = /usr/local/mysql/var2
- language = /usr/local/mysql/share/mysql/english
- user = unix_user1
- [mysqld3]
- ###### mysqld = /path/to/mysqld_safe
- ###### ledir = /path/to/mysqld-binary/
- ###### mysqladmin = /path/to/mysqladmin
- socket = /tmp/mysql.sock3
- port = 3308
- pid-file = /usr/local/mysql/var3/hostname.pid3
- datadir = /usr/local/mysql/var3
- language = /usr/local/mysql/share/mysql/swedish
- user = unix_user2
- [mysqld4]
- socket = /tmp/mysql.sock4
- port = 3309
- pid-file = /usr/local/mysql/var4/hostname.pid4
- datadir = /usr/local/mysql/var4
- language = /usr/local/mysql/share/mysql/estonia
- user = unix_user3
- [mysqld6]
- socket = /tmp/mysql.sock6
- port = 3311
- pid-file = /usr/local/mysql/var6/hostname.pid6
- datadir = /usr/local/mysql/var6
- language = /usr/local/mysql/share/mysql/japanese
- user = unix_user4
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = multi_admin
password = my_password
[mysqld2]
socket = /tmp/mysql.sock2
port = 3307
pid-file = /usr/local/mysql/var2/hostname.pid2
datadir = /usr/local/mysql/var2
language = /usr/local/mysql/share/mysql/english
user = unix_user1
[mysqld3]
###### mysqld = /path/to/mysqld_safe
###### ledir = /path/to/mysqld-binary/
###### mysqladmin = /path/to/mysqladmin
socket = /tmp/mysql.sock3
port = 3308
pid-file = /usr/local/mysql/var3/hostname.pid3
datadir = /usr/local/mysql/var3
language = /usr/local/mysql/share/mysql/swedish
user = unix_user2
[mysqld4]
socket = /tmp/mysql.sock4
port = 3309
pid-file = /usr/local/mysql/var4/hostname.pid4
datadir = /usr/local/mysql/var4
language = /usr/local/mysql/share/mysql/estonia
user = unix_user3
[mysqld6]
socket = /tmp/mysql.sock6
port = 3311
pid-file = /usr/local/mysql/var6/hostname.pid6
datadir = /usr/local/mysql/var6
language = /usr/local/mysql/share/mysql/japanese
user = unix_user4
注意[mysqld3]中打井号的行,感觉是mysql5.1.53一个bug,生成多余的配置,把它去掉就可以了。
现在我要运行2个mysql实例,修改上面的配置,如:
- [mysqld_multi]
- mysqld = /usr/local/mysql/bin/mysqld_safe
- mysqladmin = /usr/local/mysql/bin/mysqladmin
- user = root
- password = root
- [mysqld2]
- socket = /tmp/mysql.sock2
- port = 3307
- pid-file = /usr/local/mysql/var2/hostname.pid2
- datadir = /usr/local/mysql/var2 ##数据库的数据文件
- language = /usr/local/mysql/share/mysql/english
- user = mysql
- [mysqld3]
- socket = /tmp/mysql.sock3
- port = 3308
- pid-file = /usr/local/mysql/var3/hostname.pid3
- datadir = /usr/local/mysql/var3 ##数据库的数据文件
- language = /usr/local/mysql/share/mysql/english
- user = mysql
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = root
password = root
[mysqld2]
socket = /tmp/mysql.sock2
port = 3307
pid-file = /usr/local/mysql/var2/hostname.pid2
datadir = /usr/local/mysql/var2 ##数据库的数据文件
language = /usr/local/mysql/share/mysql/english
user = mysql
[mysqld3]
socket = /tmp/mysql.sock3
port = 3308
pid-file = /usr/local/mysql/var3/hostname.pid3
datadir = /usr/local/mysql/var3 ##数据库的数据文件
language = /usr/local/mysql/share/mysql/english
user = mysql
把这些配置加到/etc/my.cnf配置文件的底部。
初始化数据库
这一步很重要,数据文件没有初始化,就启动不起来数据库实例。
创建数据库的数据目录:
- sudo mkdir /usr/local/mysql/var2
- sudo mkdir /usr/local/mysql/var3
sudo mkdir /usr/local/mysql/var2
sudo mkdir /usr/local/mysql/var3
修改权限:
- chown -R mysql /usr/local/mysql/var2
- chown -R mysql /usr/local/mysql/var3
chown -R mysql /usr/local/mysql/var2
chown -R mysql /usr/local/mysql/var3
创建数据文件:
- sudo bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var2
- sudo bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var3
sudo bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var2
sudo bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var3
启动2个数据库实例
- sudo bin/mysqld_multi start 2
- sudo bin/mysqld_multi start 3
sudo bin/mysqld_multi start 2
sudo bin/mysqld_multi start 3
验证是否启动成功了
- telnet 127.0.0.1 3307
- telnet 127.0.0.1 3308
telnet 127.0.0.1 3307
telnet 127.0.0.1 3308
有数据返回,说明新加的两个实例已经运行起来了!
最后把两个实例的用户名和密码都设置为root,命令如下:
- mysqladmin -h127.0.0.1 -P3307 -uroot -p password root
- mysqladmin -h127.0.0.1 -P3308 -uroot -p password root
mysqladmin -h127.0.0.1 -P3307 -uroot -p password root
mysqladmin -h127.0.0.1 -P3308 -uroot -p password root
by 毛导