读好书,交益友
分类: Mysql/postgreSQL
2013-03-27 16:27:44
linux源码安装mysql是个蛋疼的事情,这篇文章适合mysql5.5.12,但是不适合mysql 5.6.10,至于什么问题,我懒得查了。
先安装cmake
下载cmake
wget
安装cmake
tar -zxvf cmake-2.8.4.tar.gz
cd cmake-2.8.4
./configure
make && make install
安装mysql
tar zxvf mysql-5.5.18.tar.gz
cd mysql-5.5.18
mkdir -p /usr/local/mysql/
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/data/mysql/data \
-DMYSQL_USER=mysql
make
make install
-DWITH_MEMORY_STORAGE_ENGINE 这一项无效,不要理他。
chmod +w /usr/local/mysql
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
mkdir -p /data/mysql/
mkdir -p /data/mysql/data/
mkdir -p /data/mysql/log/
cd support-files/
删除以前可能存在mysql.cnf ,注意mysql 5.6.10没有my-large.cnf这个文件
rm -fr /etc/my.cnf
cp my-large.cnf /data/mysql/my.cnf
cp my-large.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysqld
添加mysql用户
groupadd mysql
useradd -g mysql mysql
chown mysql.mysql -R /usr/local/mysql/data/mysql/
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /usr/local/mysql
添加开机启动
chmod +x /etc/init.d/mysqld
vi /etc/init.d/mysqld
basedir=/usr/local/mysql
datadir=/data/mysql/data
出现 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
是因为在进行初始化数据库权限表的那一步的时候默认创建的权限表在默认目录/usr/local/mysql/var下面,这就造成了,上面的错误无法找到权限表:Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
这样问题同样也会出现 你将自己的数据库的数据文件修改为别的目录的时候,因为你没有在相应的目录下创建数据库权限表,解决办法就是你重新运行mysql_install_db 文件,重新生成数据库权限表,但是相应的你也要重新建里用户,以及设置权限。
解决办法 在运行初始化权限表的时候使用增加参数--datadir ,命令格式为:
chmod +x scripts/mysql_install_db
scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data --basedir=/usr/local/mysql
添加自启动
chkconfig --add mysqld
chkconfig --level 345 mysqld on
service mysqld start
修改root密码
/usr/local/mysql/bin/mysqladmin -h 127.0.0.1 -u root password '123456'
/usr/local/mysql/bin/mysql -u root -p
输入密码 123456
>show databases;
出现 Starting MySQL.Manager of pid-file quit without updating file
一般是因为mysql进程没有杀干净,这是killall是不行的。
[root@web init.d]# ps -A|grep mysql
11932 pts/1 00:00:00 mysqld_safe
12084 pts/1 00:00:00 mysqld
kill -9 杀之