CentOS6.8下源码安装MySQL5.6.21
一、环境介绍
操作系统:centos6.8_x64_86
yum163源:http://mirrors.163.com/.help/CentOS6-Base-163.repo
源码安装方式 1.mysql 安装包mysql-5.6.21.tar.gz cmake-3.7.2.tar.gz
二、安装软件
yum –y install gcc* bison ncurses-devel
三、创建mysql用户(但是不能使用mysql账号登陆系统)
[root@host-test-huanqiu ~]# groupadd mysql
[root@host-test-huanqiu ~]# useradd -g mysql mysql -M -s /sbin/nologin
四、安装mysql(mysql5.6需要cmake编译)
[root@localhost src]#tar zxf cmake-3.7.2.tar.gz
[root@localhost cmake-3.7.2]# ./configure && gmake && gmake install
[root@localhost src]# tar zxf mysql-5.6.21.tar.gz
[root@localhost mysql]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
编译并安装
make && make install
五、配置mysql
1、修改/usr/local/mysql权限
chown -R mysql:mysql /usr/local/mysql
mkdir -pv /data/mysql
chown -R mysql:mysql /data/
2、执行初始化配置脚本
进入安装路径
cd /usr/local/mysql
执行初始化配置脚本,创建系统自带的数据库和表
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql (和PID号有关)
[root@localhost mysql]# pwd
/usr/local/mysql
[root@localhost mysql]# ls
bin data include lib my.cnf README share support-files
COPYING docs INSTALL-BINARY man mysql-test scripts sql-bench
注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是/usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!
3、添加服务,拷贝服务脚本到init.d目录,并设置开机启动
[root@localhost mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql]# chkconfig mysqld on #复制启动项文件
[root@localhost mysql]# chmod +x /etc/init.d/mysqld
[root@localhost mysql]# chkconfig --add mysqld
4、添加系统变量
vi /etc/profile (最下面)
export MYSQL_HOME="/usr/local/mysql"
export PATH="$PATH:$MYSQL_HOME/bin"
保存退出后,执行生效代码
source /etc/profile
六、启动mysql
1、启动mysql报错
[root@localhost mysql]# service mysqld start
Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
解决方法:
查看mysql的log(mysql的log文件具体放在哪个地方可以看my.cnf文件,my.cnf一般在/etc/下 or 在安装MySQL的目录下)
/var/log/mysqld.log的错误信息:[ERROR]Fatalerror: Can't open and lock privilege tables: Table 'mysql.user' doesn'texist
或者/usr/local/mysql/localhost.localhost.err 里面报错都一样:
2017-03-06 21:40:28 25750[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user'doesn't exist
查看my.cnf文件时发现datadir的路径和我初始化时不一样,修改为datadir=/data/mysql
或者在启动mysql之前 vi /etc/my.cnf or vi /usr/local/mysql/my.cnf 里面datadir=/data/mysql
2、启动mysql成功
[root@localhost mysql]# service mysqld start
查看mysql端口
[root@localhost mysql]#netstat -napt |grep mysqld
tcp 0 0 :::3306 :::* LISTEN 25924/mysqld
3、设置mysql密码,出错~
[root@localhost ~]# mysqladmin -uroot password 'pwd123'
mysqladmin: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/usr/local/mysql/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/usr/local/mysql/mysql.sock' exists!
解决方法:
[root@localhost mysql]# vi /etc/my.cnf
socket=/usr/local/mysql/mysql.sock #把原有socket改为正确的值,重启mysql(service mysqld restart)
[root@localhost ~]# mysqladmin -uroot -p password 'pwd123'
/usr/local/mysql 下自动生成mysql.sock
4、登陆mysql
[root@localhost mysql]# mysql -uroot –p
登陆mysql成功!!
还有一种修改登陆密码,在启动mysql之后
[root@localhost mysql]# mysql -uroot -p(直接回车,不敲密码)
mysql> update mysql.user setpassword=password('pwd456') where user='root';
5、若要设置root用户可以远程访问,执行
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIEDBY 'mypassword' WITH GRANT OPTION;
使授权立即生效
FLUSH PRIVILEGES;
红色的password为远程访问时,root用户的密码,可以和本地不同。
6、配置防火墙
默认防火墙的3306端口默认没有开启,若要远程访问,需要开启这个端口
vim /etc/sysconfig/iptables
在“-A INPUT –m state --state NEW –m tcp–p –dport 22 –j ACCEPT”,下添加:
-A INPUT -m state --state NEW-m tcp -p -dport 3306 -j ACCEPT
然后保存,并关闭该文件,重启iptables
配置完毕!