在安装之前需要先把本地的mysql给卸载的话,可以查看我的上一篇博客
linux彻底卸载mysql
1、安装依赖
$ yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel
$ cd /usr/local/src
$ tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
将解压的复制到 /usr/local/mysql 目录
$ cp -r mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/mysql
2、添加系统mysql组和mysql用户
先检查mysql组和用户是否存在,如无则创建
$ cat /etc/group | grep mysql
$ cat /etc/passwd | grep mysql
添加系统mysql组和mysql用户
添加系统mysql组
$ groupadd mysql
添加mysql用户(添加完成后可用id mysql查看)
$ useradd -r -g mysql mysql
3、安装数据库
切到mysql目录
$ cd /usr/local/mysql
修改当前目录拥有者为mysql用户
$ chown -R mysql:mysql ./
安装数据库
$ bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
如果报这个错bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决方法:
$ yum install -y libaio //安装后在初始化就OK了
执行以下命令创建RSA private key
$ bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
修改当前目录拥有者为mysql用户
$ chown -R mysql:mysql ./
修改当前data目录拥有者为mysql用户
$ chown -R mysql:mysql data
4、配置my.cnf
$ vim /etc/my.cnf //直接把下面内容复制上就行
[mysqld]
# 服务端使用的字符集
character_set_server=utf8
init_connect='SET NAMES utf8'
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#不区分大小写
lower_case_table_names = 1
#不开启sql严格模式
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
添加开机启动
$ cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
修改mysqld
$ vim /etc/init.d/mysqld
添加路径 在46行
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
5、启动mysql
$ service mysqld start
加入开机启动
$ chkconfig --add mysqld
6、登录修改密码&添加远程访问权限
$ mysql -uroot -p 上面初始化时的密码
如果出现错误 需要添加软连接,这是为了能够在任何目录下都可以登录mysql
$ ln -s /usr/local/mysql/bin/mysql /usr/bin
第一件事是先修改密码:
将localhost主机的root账户的密码改为123456
alter user ‘root’@‘localhost’ identified by ‘123456’;
刷新权限
flush privileges;
第二件事是授权新用户,表示任意主机都能够通过root用户进行访问。
注意:
如果不授权新用户的话,通过
select user,host from mysql.user
可看到下图结果,第一个是之前加错的,别管他。
这时我们通过windows是无法访问linux的mysql的,这个跟防火墙无关。想要windows能够访问linux的mysql就必须进行授权,我是理解成user,host的关系是哪些host可以访问这些user。host为%表示任意的主机都能够进行访问。
授权root新用户后
需要要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。
至此安装完毕
7、开启外部访问数据库
开放防火墙端口
$ firewall-cmd --list-all
开放3306端口
$ firewall-cmd --permanent --add-port=3306/tcp
查看3306端口是否开放
$ firewall-cmd --query-port=3306/tcp
再次查看现在防火墙
$ firewall-cmd --list-all
参考文献:
linux centos7下源码 tar安装mysql5.7.22或mysql5.7.20 图文详解
mysql远程连接问题 Access denied for user ‘root’@‘192.168.1.13’ (using password: YES)