CnetOS 下编译安装 MySql
查看是否存在旧版本:
rpm -qa | grep mysql
卸载旧版本:
rpm -e mysql #普通删除模式
rpm -e --nodeps mysql #强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
安装编译代码需要的包
yum -y install make
yum –y install gcc-c++
yum –y install cmake
yum –y install bison-devel
yum –y install ncurses-devel
解压源码:
tar –zxvf mysql-5.5.20.tar.gz
cd mysql-5.5.20
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 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
加粗部分为必须
参数说明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装目录
-DINSTALL_DATADIR=/usr/local/mysql/data //数据库存放目录
-DDEFAULT_CHARSET=utf8 //使用utf8字符
-DDEFAULT_COLLATION=utf8_general_ci //校验字符
-DEXTRA_CHARSETS=all //安装所有扩展字符集
-DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
注意事项:
重新编译时,需要清除旧的对象文件和缓存信息。
# make clean
# rm -f CMakeCache.txt
# rm -rf /etc/my.cnf
查看编译是否正确完成
echo $? #返回0表示正确完成
编译并安装
make && make install
echo $? #查看是否成功安装.
配置mysql
使用下面的命令查看是否有mysql用户及用户组
cat /etc/passwd 查看用户列表
cat /etc/group 查看用户组列表
如果没有就创建
groupadd mysql
useradd -g mysql mysql
配置目录权限
cd /usr/local/lamp/mysql/
chown -R root:mysql . #把当前目录中所有文件的所有者所有者设为root,所属组为mysql
chown -R mysql:mysql data
将mysql的启动服务添加到系统服务中
cp support-files/my-medium.cnf /etc/my.cnf
创建系统数据库的表
cd /usr/local/lamp/mysql
scripts/mysql_install_db
设置环境变量
vi /root/.bash_profile
在PATH=$PATH:$HOME/bin添加参数为:
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin:/usr/local/mysql/lib
source /root/.bash_profile 生效文件
启动MySQL
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig –add mysqld
service mysqld start --启动MySQL
修改MySQL的root用户的密码以及打开远程连接
mysql -u root mysql
mysql>use mysql;
mysql>desc user;
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY
"root"; //为root添加远程连接的能力。
mysql>update user set Password = password('xxxxxx') where User='root';
mysql>select Host,User,Password from
user where User='root';
mysql>flush privileges;
mysql>exit
重新登录:
mysql -u root –p
若还不能进行远程连接,则关闭防火墙
/etc/rc.d/init.d/iptables
stop
新增用户后,出现新用户无法登陆的情况时候,登陆数据库,删除空用户就可以登陆。
delete from user
where user is null;
delete from user
where user='';
FLUSH PRIVILEGES;