Home  >  Article  >  Database  >  mysql多实例安装的详解_MySQL

mysql多实例安装的详解_MySQL

WBOY
WBOYOriginal
2016-06-01 13:32:52853browse

bitsCN.com

mysql多实例安装的详解

 

首先说明一个场景:我的电脑是ubuntu系统,之前apt-get自动安装过mysql。这也是出现错误最多的原因之一。 

安装过程,其中充斥着各种错误: 

Java代码  

6.mkdir mysql  

7.groupadd mysql  

8.useradd -r -g mysql mysql  

# make clean  

# rm -f CMakeCache.txt  

# rm -rf /etc/my.cnf  

9.cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql  

-DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8  

-DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all  

-DENABLED_LOCAL_INFILE=1  

make  

make install  

 

 

这个表示我们的mysql源码安装已经完成了,现在要做就是初始化用户了,也就是多实例中最重要的一部了,以后的每一步都要注意命令执行后的结果: 

Java代码  

cd /usr/local/mysql  

chown -R root:mysql .  

chown -R mysql:mysql data  

11.cp support-files/my-medium.cnf /etc/my.cnf  

12.cd /usr/local/mysql  

 

 

Java代码  

scripts/mysql_install_db --defaults-file=/usr/local/mysql/data_3308/my.cnf --datadir=/usr/local/mysql/data_3308/  

 

 

上面的mysql_install_db这个命令就是来进行初始化新用户。这里要注意命令执行后的结果,

Java代码  

第一次的时候我的执行结果是这样的:  

root@zhou:/usr/local/mysql# scripts/mysql_install_db --defaults-file=/usr/local/mysql/data_3307/my.cnf --datadir=/usr/local/mysql/data_3307/  

Installing MySQL system tables...  

130107 10:25:47 [ERROR] COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8'  

130107 10:25:47 [ERROR] Aborting  

130107 10:25:47 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete  

 

 

这里可以看出已经出现了错误,原因是什么,大家应该可以看明白了,自己太马虎了。导致自己重新执行了一次cmake 

然后重新进行上面的命令了。直到我们看到这样的结果:表示初始化成功了,恭喜你下面可以进行下面的操作了。

Java代码  

root@zhou:/usr/local/mysql# mysql_install_db --user=mysql --defaults-file=/usr/local/mysql/data3307/my.cnf --datadir=/usr/local/mysql/data3307/  

Installing MySQL system tables...  

OK  

Filling help tables...  

OK  

 

 

这时他会在我们的data目录中生成一些mysql库啊和test库等这些基本信息。 

对了一定要注意了,权限的分配,一不小心mysql的就无法读取相关文件的权利。 

Java代码  

mysqld_safe --defaults-file=/usr/local/mysql/data_3307/my.cnf &  

130107 13:35:36 [Note] Server socket created on IP: '0.0.0.0'.  

130107 13:35:36 [ERROR] /usr/local/mysql/bin/mysqld: Can't find file: './mysql/host.frm' (errno: 13)  

130107 13:35:36 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)  

130107 13:35:36 mysqld_safe mysqld from pid file /usr/local/mysql/data3307/mysql.pid ended  

 

 

这里的错误也是很明显的原因就是我们没有读取host。frm的权限了,补救的办法又两种:一种是直接到目录下给mysql附上这样的权限,第二种就是追究它原因为什么会那样呢?原因是我们在初始化的时候,没有加入--user=mysql这个参数才导致生成的文件全市root权限。 

在下次做时,就需要这样的命令了: 

Java代码  

root@zhou:/usr/local/mysql# mysql_install_db --user=mysql --defaults-file=/usr/local/mysql/data3307/my.cnf --datadir=/usr/local/mysql/data3307/ --user=mysql  

 

 

ok,这时我们可以通过命令来查看一下我们开通的服务个数,然后登录上去进行基本的操作,权限,键表啊,replication啊等等。 

 

这里启动了三个mysql服务器后,发现只能登录到3306上面的服务去,而其他的就是没法登录,当我把3307 3306杀掉后,登录mysql确出现错误了, 

Java代码  

root@zhou:/usr/local/mysql/tmp# mysql  

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)  

 

 

错误原因:当在没有指定那个数据库服务器是它是有个默认启动计划,所以这里可以看出它还是在等待mysql 3306的那个服务器的。 

Java代码  

root@zhou:/etc/init.d# mysql -h127.0.0.1 -P3307  

 

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn