[MySQL]Linux 安装Rmp格式MySQL
在Linux(CentOS6.5)操作系统下,安装MYSQL有两种方式:
一种tar安装方式,一种是rpm安装方式。
这两种安装方式有什么区别呢?尽管我们在Linux下常用tar来压缩/解压缩文件,但MYSQL的tar格式的文件其实只是mysql的文件包,并不能直接安装,需要操作configure、make、install等命令才能完成安装,是一种比较繁琐的安装方式。而rpm格式的文件是真正的安装包,相当于windows的exe文件,可以直接安装。
本文以MySQL-5.7.20 64位版本rpm格式的安装方式为例,详述MySQL的安装方式,32位的rpm版本安装方式也是如此。
(一)删除老版本的MySQL
在安装前要先确定系统是否已经安装了其他版本的MySQL,如已安装其他版本的MySQL,需先删除后再安装新版本。经本文亲测,采用如下方式删除老版本的MySQL或MySQL残留文件作为方便。
1.执行yum命令,删除MySQL的lib库,服务文件
yum remove mysql mysql-server mysql-libs mysql-server;
2.执行yum命令,删除MySQL的lib库,服务文件
find / -name mysql;
(二)RPM格式安装MySQL
当前,MySQL的最新版本为:5.7.20,从官网下载(Red Hat)MySQL的rpm安装包:
> mysql-community-common-5.7.20-1.el7.x86_64.rpm
> mysql-community-libs-5.7.20-1.el7.x86_64.rpm
> mysql-community-client-5.7.20-1.el7.x86_64.rpm
> mysql-community-server-5.7.20-1.el7.x86_64.rpm
1.在重新进行安装之前,为确保万无一失,我们还是再确认一下系统中是否有MySQL极其相关的RPM安装包。如果有,则先删除。
rpm -qa | grep -i mysql;
执行完上述命令后,返回空数据,则可进行第二步。否则,执行下面的命令删除MySQL的相关包文件。
yum -y remove mysql-libs*;
2.将前面提到的MySQL安装文件,拷贝到服务器【/opt】目录下,依次执行下述安装命令
rpm -ivh mysql-community-common-5.7.20-1.el7.x86_64.rpm;
rpm -ivh mysql-community-libs-5.7.20-1.el7.x86_64.rpm;
rpm -ivh mysql-community-client-5.7.20-1.el7.x86_64.rpm;
rpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm;
如果遇到警告
- 无风险升级
/lib64/libc.so.6: version `GLIBC_2.18’ not found (required by /lib64/libstdc++.so.6)
原因:当前系统安装的 GLIBC 版本低于软件编译时使用的 GLIBC 版本
解决办法:升级 GLIBC
rpm -qa | grep glibc; #当前系统装了 GLIBC 的哪些包
strings /lib64/libc.so.6 | grep GLIBC; #以及最高支持版本
curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxf glibc-2.18.tar.gz
cd glibc-2.18/
mkdir build
cd build/
../configure --prefix=/usr #注意了,别修改路径
make -j2
make install
- 旧版GPG keys
warning: mysql-5.7.20.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
原因:这是由于yum安装了旧版本的GPG keys造成的
解决办法:后面加上
--force --nodeps;
如:
rpm -ivh mysql-community-server-5.7.20-1.el7.x86_64.rpm --force --nodeps;
- 缺少 libstdc++.so.6(GLIBCXX_3.4.15)
error: Failed dependencies:
libstdc++.so.6(GLIBCXX_3.4.15)
原因:CentOS6.5 缺少 libstdc++.so.6(GLIBCXX_3.4.15)
解决办法:下载libstdc+±4.8.2-16.el7并安装
rpm -ivh libstdc++-4.8.2-16.el7.x86_64.rpm --replacefiles;
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX;
- 缺少numactl
mysqld: error while loading shared libraries: libnuma.so.1:cannot open shared object file: No such file or dir
原因:CentOS6.5 缺少 numactl
解决办法:运行以下命令
yum -y install numactl;
3.分别运行下述命令,初始化MySQL及设置密码
- 初始化MySQL
cd /usr/bin;
mysqld --initialize --user=mysql;
- 更改mysql数据库目录的所属用户及其所属组(没用创建mysql用户)
chown mysql:mysql /var/lib/mysql -R
- 授权
chmod -R 777 mysql
- 启动MySQL
systemctl start mysqld.service
- 重置密码
1、打开 etc/my.cnf 文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件
vim /etc/my.cnf
2、重启MySQL
systemctl restart mysqld.service
3、在命令行中输入以下命令(不输入密码),回车即可进入数据库
mysql -u root -p;
4、使用mysql数据库
use mysql;
5、修改root的密码
5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string
update user set authentication_string=password("rootadmin") where user='root';
6、打开 etc/my.cnf 文件,删除最后一行的“skip-grant-tables”,保存并关闭文件
7、重启MySQL服务
systemctl restart mysqld.service
8、问题搞定!
mysql -uroot -prootadmin
9、初始化密码常见报错问题
use mysql;
用该密码登录后,必须马上修改新的密码,不然会报如下错误:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
修改初始登录密码
alter user 'root'@'localhost' identified by '!@#a123456';
- 授权远程连接
grant all privileges on *.* to 'root'@'%'identified by '!@#a123456' with grant option;
- 配置默认编码为UTF8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置
character_set_server=utf8
init_connect='SET NAMES utf8'
重启MySQL服务
- 设置开机启动
检查是否已经是开机启动
systemctl list-unit-files | grep mysqld
开机启动
systemctl enable mysqld.service