MySQL目前最新版本是5.7.x,这里安装的MySQL版本是稳定的5.6.29版本,和5.7版本的版本安装过程不太一样,这里在CentOS 7.2系统上部署过程如下
首先,打开下载链接:http://www.mysql.com/downloads/,页面最上面是企业版,一般个人或者企业使用社区版就足够了,页面拉到最下方可以看到下载入口:
点击链接进入,然后选择第一项进入:
这里默认是5.7.11的版本,我们选择5.6的下载链接进入:
进入后,默认版本就是5.6.19,对于版本这里选择Linux - Generic,也就是通用的二进制版本
然后上面都是RPM的包,我们拉到页面最下方根据操作系统位数选择.tar.gz的包,这里选择64位的mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
点击Download下载到本地,然后上传到服务器准备安装
接下来执行安装过程:
释放归档文件: tar -xvzf mysql-5.6.29-linux-glibc2.5-x86_64.tar.gz
建立mysql目录并移动至安装目录:
mkdir /usr/local/mysql
mv mysql-5.6.29-linux-glibc2.5-x86_64 /usr/local/mysql/
cd /usr/local/mysql/mysql-5.6.29-linux-glibc2.5-x86_64/
首先要注意,因为系统可能默认存在/etc/my.cnf,并且里面可能设置好了datadir,socket等属性,但是这些目录并不一定是我们想要设置的目录,比如我们一般会希望默认数据目录是当前包下的data目录等,所以一般需要执行 cp support-files/my-default.cnf /etc/my.cnf 覆盖原有的my.cnf,并且在里面[mysqld]下面添加basedir为我们要安装的mysql目录,这样的话后面安装都是按照默认的目录进行,否则后面还得重新设置数据目录等,比较麻烦,这样的话其他的优化的参数配置都需要我们后来手动的添加,这一步一定要确认
接下来创建mysql用户和用户组:
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
修改当前目录权限为mysql权限:
chown -R mysql .
chgrp -R mysql .
执行安装: ./scripts/mysql_install_db --user=mysql
如果上一步安装失败,提示FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:Data::Dumper的话,那么原因是缺少perl-module,那么执行命令: yum -y install perl-Module-Install.noarch 安装perl-module模块,需要下载安装98个包,这个要耐心等待一会,等待perl-module安装成功之后,再继续执行上一步安装
等安装成功之后,将权限修改为合适的权限:
chown -R root .
chown -R mysql data
然后建立mariadb的日志目录,否则下一步会报错,使用命令: mkdir /var/log/mariadb
然后执行mysql安全启动脚本: bin/mysqld_safe --user=mysql & 执行后,再按一下回车回到命令行,没报错则启动成功
最后将mysql添加到系统服务: cp support-files/mysql.server /etc/init.d/mysql.server
这时候网上一些教程一般都说可以启动了,但是启动的时候会提示错误:Starting MySQL ERROR! Couldn't find MySQL server (/usr/local/mysql/bin/mysqld_safe),表示找不到mysqld_safe,这是因为没有将mysqld_safe链接到上面提示的目录,可以修改一下配置文件来指定位置,执行 vim /etc/my.cnf 打开配置mysql配置文件,如果意外丢失在刚才安装过程中mysql安装目录下也会生成一个my.cnf和support-files/my-default.cnf完全一致,可以将这个文件拷贝到/etc/下,根据错误提示是/mysqld_safe找不到,所以应该配置my.cnf中[mysqld]标识下面的basedir的属性为mysql的安装目录,也就是这里的:/usr/local/mysql/mysql-5.6.29-linux-glibc2.5-x86_64
配置完之后,保存并退出,然后执行 /etc/init.d/mysql.server start 可以正常启动mysql服务
然后可以执行 bin/mysql 进入mysql交互界面,如果这里出现mysql.sock错误的提示,继续编辑/etc/my.cnf文件,修改其中的socket属性为:/tmp/mysql.sock即可,或者注释默认即可,保存并退出;另一种方法推荐在/tmp下做软链接,将my.cnf配置文件中配置的socket位置链到提示错误的mysql.sock位置,命令是: ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock ;解决之后再次进入mysql交互界面就可以了
输入 quit 可以退出交互界面,mysql初始密码为空,可以使用mysqladmin为mysql服务器设置一个密码:
bin/mysqladmin -u root password '123456'
修改完成后通过执行命令: bin/mysql -uroot -p 回车后继续输入密码即可登录mysql
如果后续需要修改密码,因为mysql数据库密码是存放在mysql的一个数据库中的user表中,那么可以通过SQL语句实现,首先登录mysql数据库在mysql提示符中进行如下操作即可修改密码:
mysql> USE mysql;
mysql> UPDATE user SET Password=PASSWORD('newpass') WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
通过以上3步即可修改为你想要的密码,并且下次立即生效,现在数据库在本地就可以正常使用了,
后来可以把mysql添加至环境变量中,便于直接输入mysql进入,不用加路径了,这个是可选的,根据自己的需要即可
现在还要注意一个问题,虽然通过命令行可以进入了,但是我们从其他主机编写的程序是无法连接到这台服务器的,在生产环境中这样肯定是不行的,所以我们要对所有主机开放授权,这样才可以正常访问,首先我们登录mysql,然后执行下面命令可以给所有主机开放root用户的授权:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'setpassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
第一行指令的%代表所有主机来源,setpassword可以设置和本地mysql不同的密码,当然一般情况下相同即可,执行完上面的指令后mysql就可以从外网立即连接了,到这里mysql基本的安装配置就完成了