一、安装前的准备:
首先下载MySql安装包,这里我下载的版本是: mysql-5.7.16-Linux-glibc2.5-x86_64.tar.gz
官网下载地址:https://dev.mysql.com/downloads/
在linux中下载: #wget http://dev.MySQL.com/get/Downloads/MySQL-5.7/mysql-5.7.16-Linux-glibc2.5-x86_64.tar.gz
二、安装:
1. 创建目录 /usr/local/mysql
# mkdir /usr/local/mysql/
2. 首先将安装包复制到 /user/local 目录下,进入local目录,解压安装包
#tar -xvf mysql-5.7.16-linux-glibc2.5-x86_64.tar.gz -C /usr/local/mysql/
这里要注意,解压后的目录名是mysql(别的也可以,只是后续的操作需要注意它的路径)
3. 创建mysql用户:
#groupadd mysql
可以查看 用户是否创建成功
#cat /etc/group
#useradd -r -g mysql mysql
4. 进入mysql 目录中 ,执行安装程序:
#cd /usr/local/mysql/
# yum install libaio
5. 创建日志目录
# mkdir /var/log/mariadb/
# chown mysql:mysql /var/log/mariadb/
# mkdir /var/run/mariadb
# chown mysql:mysql /var/run/mariadb
如果不创建分别会出现如下错误:
touch: 无法创建"/var/log/mariadb/mariadb.log": 没有那个文件或目录
chmod: 无法访问"/var/log/mariadb/mariadb.log": 没有那个文件或目录
6. 修改my.cnf配置文件
#cd /usr/local/mysql/support-files
#cp my-default.cnf /etc/my.cnf
#cp mysql.server /etc/init.d/mysql
#vim /etc/my.cnf
将socket 修改为 socket=/tmp/mysql.sock ,否则会出现以下问题
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
7. 初始化数据库
如果是centos系统,默认会开启selinux
关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试。
# cd /usr/local/mysql
# ./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql
出现以下语句表示成功,并显示root临时密码。
[Note] A temporary password is generated forroot@localhost: 这个冒号后面就是临时密码
8. 启动数据库
# ./bin/mysqld_safe --user=mysql
这时可以查看日志是否启动成功
# cat /var/log/mariadb/mariadb.log
Version: '5.7.16' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
9. 修改root用户密码
# ./bin/mysql -uroot -p
然后输入临时密码进入数据库,执行以下修改密码命令。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '这里写密码';
mysql> flush privileges;
10. 设置系统自动启动
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig --level 2345 mysqld on
11. 添加环境变量
# vim /etc/profile
在最后添加以下语句:
export MYSQL_HOME="/usr/local/mysql"
export PATH="$PATH:$MYSQL_HOME/bin"
注:MYSQL_HOME的路径即mysql的绝对路径
保存退出 ,刷新环境变量
# source /etc/profile
12. 修改mysql的编码集,设置大小写不敏感
# vim /etc/my.cnf
13. 重启数据库
# service mysqld restart
至此 mysql 完成了安装,这时 我们可以使用客户端进行连接了。
三、客户端连接
我这里是安装在虚拟机中的,在Windows中使用的是Navicat 进行连接的,提示出现无法连接;
出现的原因:由于CentOS的防火墙的原因。
解决方法:
1. 连接虚拟机的中的mysql时 ,就相当于远程连接,此时需要防火墙开通一些端口:
# vim /etc/sysconfig/iptables
加入以下规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
说明:防火墙开放http用的80端口和连接MySql的3306端口。
重启防火墙服务
# service iptables restart
如果是firewalld防火墙请参考:
查看端口是否已开:
# firewall-cmd --query-port=3306/tcp
添加指定需要开放的端口:
# firewall-cmd --add-port=3306/tcp --permanent
yes 为已开放,no 是未开放
重载入添加的端口:
# firewall-cmd --reload
查询指定端口是否开启成功:
# firewall-cmd --query-port=123/tcp
2. 配置MySQL允许远程登陆:
先在CentOS中连接Mysql数据库
# ./bin/mysql -uroot -p
然后执行下列命令
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
mysql> flush privileges;
之后就可以退出mysql了,无需重启mysql服务。 打开Windows下的Navicat就可以直接连接到CentOS下的数据库了。
MySQL8.0+ 的配置方式如下:
1.查看用户目前的权限
use mysql;
select Host,User from user where user='root';
我这里已经开放了外网权限,没有开放%显示的是localhost
2.修改Host为%,代表外网可以连接,并刷新
update user set Host='%' where User ='root';
FLUSH PRIVILEGES;
3.再执行授权语句
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;
4.在本地使用navicat看看能否连接