最近接触到多数据源的切换的问题,觉得很有意思,就在空余时间想写个数据库读写分离的demo测试下,所以,必须先在linux下搭建一个mysql集群,下面是在linux下安装mysql5.5的步骤,也是搜索了一些博客整理出来的,因为很多博客记录不是很详细,导致安装过程也不是很顺利,所以自己修改了其中的问题,来存下档:
1,创建mysql安装目录
# mkdir -p /usr/local/webserver/mysql/
2,创建数据存放目录
# mkdir -p /data/mysql/
3,创建用户和用户组与赋予数据存放目录权限
# groupadd mysql
# useradd -g mysql mysql
# chown mysql.mysql -R /data/mysql/
4,安装cmake(mysql5.5以后是通过cmake来编译的)
# wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
# tar zxvf cmake-2.8.4.tar.gz
# cd cmake-2.8.4
(----在 cmake-2.8.4 目录下----)
#.configure
# make && make install
5,下载解压mysql 5.5.11
wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.11.tar.gz
[root@localhost down]# tar zxvf mysql-5.5.11.tar.gz
[root@localhost down]# cd mysql-5.5.11
6,编译mysql-5.5.11
(----在 mysql-5.5.11 目录下----)
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql/
\-DMYSQL_DATADIR=/data/mysql
\-DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock
\-DWITH_INNOBASE_STORAGE_ENGINE=1
\-DENABLED_LOCAL_INFILE=1 \-DMYSQL_TCP_PORT=3306
\-DEXTRA_CHARSETS=all \-DDEFAULT_CHARSET=utf8
\-DDEFAULT_COLLATION=utf8_general_ci
\-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock
\-DMYSQL_USER=mysql \-DWITH_DEBUG=0
[root@host mysql-5.5.11]# make
[root@host mysql-5.5.11]# make install
7,复制配置文件
[[email protected]]# cp support-files/my-medium.cnf /etc/my.cnf
[[email protected]]# cp support-files/mysql.server /etc/init.d/mysqld
[[email protected]]# chmod 755 /etc/init.d/mysqld
8,初始化数据库
bash scripts/mysql_install_db --user=mysql --basedir=/usr/local/webserver/mysql/mysql-5.5.11 --datadir=/data/mysql/
-----------------------
可能出现错误
120330 16:19:42 [ERROR] Unknown collation: 'utf8-general_ci'
造成这种错误原因是在配置参数时utf8-general_ci写错了,应该是utf8_general_ci,
如果不想重新安装数据库那就在my.cnf文件中[mysqld]下面增加一行:
character_set_server=utf8
-----------------------
9,启动mysql服务
[root@localhost mysql-5.5.11]# /etc/init.d/mysqld start
10,启动完成之后用ps -ef |grep mysql 命令查看是否启动
11,/usr/local/webserver/mysql/bin/mysql -u root -p
通过命令行登录管理MySQL服务器 初始密码为空
11,修改root密码
mysql>;use mysql ;
mysql>; update user set password=PASSWORD("123456") where user='root';