前情提要:该文记录了我从零开始安装的相关步骤,以及再安装过程中遇到的一些问题及对应的解决方法,写下此文一方面是给自己留个文档参考,节省以后再次安装时的时间,一方面给看到此文并且又这方面需求的小伙伴提供一个方案。
安装步骤:
1 创建目录 mkdir /usr/local/mysql(存放mysql文件地址)
2 进入Tools目录cd /home/stoneBoy/Tools(自定义的压缩包存放目录)
3 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-i686.tar.gz下载安装包(也可以先下载安装包在传到服务器上,我这里采用的是非源码包安装,rpm包安装类似,不过要注意安装相关依赖包)
4 解压并复制
[root@stoneBoy Tools]# tar -xvf mysql-5.7.22-linux-glibc2.12-i686.tar.gz [root@stoneBoy Tools]# mv mysql-5.7.22-linux-glibc2.12-i686/* /usr/local/mysql/
5 创建Data目录
[root@stoneBoy Tools]# mkdir /usr/local/mysql/data
6 检查mysql组和用户是否存在,不存在则创建
[root@stoneBoy mysql]# cat /etc/group | grep mysql
[root@stoneBoy mysql]# cat /etc/passwd |grep mysql
创建
[root@stoneBoy mysql]# groupadd mysql
[root@stoneBoy mysql]# useradd -r -g mysql mysql #useradd -r参数表示mysql用户是系统用户,不可用于登录系统
7 更改mysql目录下所有的目录及文件所属组和用户
[root@stoneBoy mysql]# chown -R mysql.mysql /usr/local/mysql/
8 安装和初始化数据
[root@stoneBoy bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/--datadir=/usr/local/mysql/data/
此时如果报如下错误:
./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
解决方法:安装相关依赖[root@stoneBoy bin]# yum -y install numactl
重新执行上述安装语句,会出现如下错误:
2018-05-22T14:16:51.508076Z 0 [ERROR] Can't find error-message file '/usr/local/mysql/--datadir=/usr/local/mysql/data/share/errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
解决方案:重新执行如下语句:
[root@stoneBoy bin]# ./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US
这会终于安装成功了!!!
注:图中我标红的地方为mysql root用户的初始化密码(最好先复制保存一份,后面首次登录时要用到的)
9 配置my.cnf文件(下面文本是我设置的,根据自己需要调整)
[mysqld]
#datadir=/var/lib/mysql
character_set_server=utf8
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/
port = 3306
socket=/var/lib/mysql/mysql.sock
#user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
10 将mysql的服务脚本放到系统服务中(如果不这配置这项的话,启动mysql可通过./mysqld_safe --user=mysql &命令启动)
[root@stoneBoy support-files]# cp mysql.server /etc/init.d/mysql
这样就可以通过如下命令启动、停止、重启服务:
[root@stoneBoy bin]# service mysql start
[root@stoneBoy bin]# service mysql stop
[root@stoneBoy bin]# service mysql restart
11 将mysql服务启动后登录
查看是否登录成功:[root@stoneBoy bin]# ps -ef|grep 3306
能查到进程号说明启动成功
[root@stoneBoy bin]# ./mysql -u root -p
报错:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
提示找到sock文件,我在my.cnf配置文件中配置的是socket=/var/lib/mysql/mysql.sock
解决方案:创建软连接,将/tmp/mysql.sock指向/var/lib/mysql/mysql.sock
[root@stoneBoy bin]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
再次登录成功。
可看到mysql的版本信息
12 查看数据库
mysql> show databases; #展示了四个默认的数据库
14 查看mysql数据库的表信息
mysql> use mysql;
mysql> show tables;
13 修改root密码(原始密码不好记,改成自己容易记住的密码,记得一定要先登录成功才可改密码,语句后面的“;”不能省)
mysql> set password=password("root");
14 设置远程登录权限
mysql> grant all privileges on *.* to'root' @'%' identified by 'root';
mysql>flush privileges; (重新加载一下mysql权限,这步不要省了)
mysql> quit; (退出登录)
15 远程连接测试
如果连接失败,看下linux防火墙中有没有放开端口3306的访问权限,具体操作如下:
[root@stoneBoy bin]# cd /etc/sysconfig/
[root@stoneBoy sysconfig]# vi iptables
添加我标红的部分
注:我这里配置的是mysql默认的端口,如果端口号改过的,改成相应的即可。
保存后,重启防火墙[root@stoneBoy sysconfig]# /etc/init.d/iptables restart。
大功告成!!!