Linux下cmake安装mysql及mysql遇到的问题解决

上一篇 / 下一篇  2014-09-27 21:47:35 / 个人分类:MySQL

安装环境:Linux服务器CentOS 5.5

安装版本:mysql-5.5.8.tar.gz

LANG=C
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

#先下载cmake

wgethttp://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz

#安装cmake
tar xvzf cmake-2.8.4.tar.gz
./configure
make
make install


#创建mysql用户名及组

/usr/sbin/groupadd mysql
/usr/sbin/useradd -g mysql mysql

#下载最新的mysql
wgetftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.5/mysql-5.5.10.tar.gz

或 wgetftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.5/mysql-5.5.40.tar.gz

#解压
tar zxvf mysql-5.5.10.tar.gz
cd mysql-5.5.10

#开始编译并安装

/usr/local/bin/cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock -DMYSQL_USER=mysql -DWITH_DEBUG=0

make && make install
chmod +w /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
cp support-files/my-small.cnf /etc/my.cnf
chown mysql:mysql /etc/my.cnf

执行下面的
/usr/local/webserver/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

在/etc/my.cnf  打开下面的InnoDB配置以减少内存即可:
default-storage-engine=MyISAM
server-id       = 1
innodb_buffer_pool_size = 21M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

启动:带--user=mysql
/usr/local/mysql/bin/mysqld_safe --user=mysql

参数说明:

-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 

6)、创建系统数据库的表

# cd /usr/local/mysql

# scripts/mysql_install_db --user=mysql

7)、设置权限启动

设置环境变量

# 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 

# cd /usr/local/mysql

# ./bin/mysqld_safe --user=mysql &   //启动MySQL,但不能停止

启动日志写在此文件下:/usr/local/mysql/data/localhost.err

关闭MySQL服务

# mysqladmin -u root -p shutdown  //这里MySQL的root用户还没有配置密码,所以为空值。

通过脚本启动MySQL

# ln -s /usr/local/mysql/support-files/mysql.server /usr/local/mysql
# mysql.server start //启动mysql
# mysql.server stop //停止mysql

在引导时启动MySQL :

# ln -s /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql

# ln -s /usr/local/mysql/mysql.server /etc/rc.d/init.d/mysql 
# cd /etc/rc.d/init.d
# chkconfig --add mysql       //配置是否自动启动, chkconfig --del mysql 可删除
# chmod +x /etc/rc.d/init.d/mysql    //添加如执行权限

复制代码
Tips
Linux运行级别:
分成了8种运行级别,其中常用7种。可在/etc/inittab文件中设置。
0 - halt
1 - Single user mode
2 - Multiuser, without NFS
3 - Full multiuser mode
4 - unused
5 - x11
6 - reboot
默认设置为:id:3:initdefault:
每一种动行级别都有自已独立的文件夹,例如:
/etc/rc.d/rc3.d 表示运行级别为3的配置都存放在这个文件侠中。

#chkconfig--list |grep mysql      //检查看是否设置为自启动
mysql 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
表示: 运行级别2、3、4、5都会自动启动mysql
复制代码

另一种手动配置自已启动

可能会出现这种情况,如果你试图在/etc/rc.d/rc3.d目录下运行../init.d/mysql start可能会收到如下错误

Starting MySQLCouldn't find MySQL server (./bin/mysqld_safe[失败]

可见mysql.server内部引用了一个相对路径./bin/mysqld_safe,所以这样就导致失败。

解决办法:在/etc/my.cnf 配置文件中添加:

basedir = /usr/local/mysql

8)、修改MySQL的root用户的密码

# /etc/init.d/mysql stop
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

# 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

注意事项:

<1>、MySQL5.5 默认使用InnoDB作为存储引擎,所以可以不设置DWITH_MYISAM_STORAGE_ENGINE值

参考:

如何打开MySQL中root账户的远程登录 

mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "root";
注意%对应的密码,如果不相同,可以通过 update user set Password = password('xxxxxx') where User='root'; 修改。

同时注意防火墙是否已关闭或者添加例外。

# /etc/rc.d/init.d/iptables stop

关闭或开启Linux/CentOS上的防火墙 

导出数据库生成SQL脚本
mysqldump -h 192.168.200.18  -u root -p TestDB > TestDB.sql

<2>、测试mysql守护进程。

#cd /usr/local/mysql/mysql-test ;

#perl mysql-test-run.pl

<3>、注意事项:

复制代码
Tostart mysqld at boot time you havetocopy
support
-files/mysql.servertotherightplaceforyour system

PLEASE REMEMBER
TOSETA PASSWORDFORTHE MySQL rootUSER!
Todo so, start the server,thenissue the following commands:

/usr/local/mysql/bin/mysqladmin-u root password'new-password'
/usr/local/mysql/bin/mysqladmin-u root-h localhost password'new-password'

Alternatively you can run:
/usr/local/mysql/bin/mysql_secure_installation

which will also give you the
optionofremoving the test
databases
andanonymoususercreatedbydefault. Thisis
strongly recommended
forproduction servers.

See the manual
formore instructions.

You can start the MySQL daemon
with:
cd
/usr/local/mysql ;/usr/local/mysql/bin/mysqld_safe&<SPAN style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5 !important; MARGIN: 0
Linux下解决MySQL无法远程连接问题
在搭建MySQL过程中,默认的Root账户是只能在本机访问的,如果想通过其他机器访问Linux上的MySQL数据库,必然需要进行一番配置,接下来我来介绍一下我的解决方案。首先,用Root账户从命令行进入MySQL,成功后按如下方法配置
1.下方语句为对应账户赋予可以访问的权限,‘用户名’和‘密码’部分填写所需的
grant all privileges on *.* to '用户名' @'%' identified by '密码' with grant option;
2.写入权限
flush privileges;
3.重启数据库
service mysqld restart
在保证网络正在的情况下,我发现进行如上配置后还是无法远程连接Linux的MySQL数据库。后来我发现原来是防火墙在作怪,这里仍然有两种解决办法,一种在配置文件里添加上3306端口的例外,一种直接关闭防火墙.

TAG:

 

评分:0

我来说两句

Open Toolbar