linux安装mysql5.7

安装前准备:

mysql官网下载对应系统版本的mysql安装包mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz,并用ftp上传到/user/local/;

 

约定:

mysql安装目录:/usr/local/mysql/

mysql数据目录:/data/mysql

日志位置:/var/log/mariadb

一、将其解压,并移动

# tar -zxvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz 
# mv mysql-5.7.29-linux-glibc2.12-x86_64 /usr/local/mysql

二、创建需要的目录,并授权

创建组
# groupadd mysql
创建mysql用户并阻止其登录shell
# useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql/
更改目录的权限
# cd /usr/local/mysql/
# chown -R mysql .
# chgrp -R mysql .
创建数据目录
# mkdir /data
# mkdir /data/mysql
更改目录权限
# cd /data/mysql/
# chown -R mysql /data/mysql/
创建日志目录
# mkdir /var/log/mariadb/
创建日志文件
# vim /var/log/mariadb/mariadb.log
打开日志文件后直接保存退出
#:wq
更改权限 # chown -R mysql . # chgrp -R mysql .

三、初始化数据

# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

执行命令后会有提示初试临时密码需要记下来:

2020-04-04T08:05:51.268606Z 1 [Note] A temporary password is generated for root@localhost: hoSv+epGf1BW

四、拷贝mysql.server到/etc/init.d下,并编辑它

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# vim /etc/init.d/mysql

修改其中的basedir及datadir的值
basedir=/usr/local/mysql
datadir=/data/mysql

这样就能在linux全局下使用start、stop、status启动、停止、查看mysql状态
# service mysql start
# service mysql stop
# service mysql status

五、修改my.cof文件

# vim /etc/my.cnf
datadir=/data/mysql
socket=/data/mysql/mysql.sock

六、启动mysql

启动mysql
[root@localhost mysql]# /etc/init.d/mysql start
Starting MySQL. SUCCESS! 
[root@localhost mysql]# mysql -hlocalhost -uroot -p
在此处我遇到了一个错误,则执行下一条命令,无错误则跳过
-bash: mysql: command not found
[root@localhost mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin/
[root@localhost mysql]# mysql -hlocalhost -uroot -p
Enter password: 
在此处输入正确的初试密码后提示错误,没有套接字相关的文件
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
在这里说明一下,MySQL客户端与服务端进行连接的时候,有三种连接方式:TCP/IP、命名管道和共享内存、Unix域套接字文件;
在linux主机上使用localhost进行登录或者使用--protocol=socket的启动参数,服务端程序和客户端程序之间就通过Unix域套接字文件进行通信,使用Unix域套接字进行通信时,就使用到了在/etc/my.conf文件中指定的mysql.sock文件。
在多次安装该版本的mysql后发现,由于第一次启动服务端程序时修改了my.conf文件中的mysql.sock文件的路径参数,可能是导致不能产生mysql.sock的原因。
由于本虚拟机已经设置好网络,则使用tcp/ip的方式进行连接,且在正常情况下均是使用tcp/ip进行连接。
由于是临时登录,且套接字登录的方式仅适用于本机,所以接下来就使用ip的方式进行登录,并登录成功 [root
@localhost mysql]# mysql -h127.0.0.1 -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.29

七、修改密码为root

mysql> set password=password('root');
Query OK, 0 rows affected, 1 warning (0.00 sec)

八、使用navicat等连接工具进行连接测试

使用连接工具进行连接时出现了错误:

  1130 - Host XXX is not allowed to connect to this MySQL server

经过网上查询发现是由于mysql配置host出现了问题:

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host from user where user='root';
+-----------+
| host      |
+-----------+
| localhost |
+-----------+
1 row in set (0.00 sec)

Host列指定了允许用户登录所使用的IP
user=root Host=localhost,表示只能通过本机客户端去访问。
%是通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。
如果Host=%,表示所有IP都有连接权限。 
注意:将host设置为%会存在安全问题,具体的设置可以根据生产环境的IP进行设置;

mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select host from user where user='root';
+------+
| host |
+------+
| %    |
+------+
1 row in set (0.00 sec)
执行flush privileges使配置立即生效
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

九、设置MYSQL开机自动启动环境变量增加MySQL相关:

[root@localhost mysql]# vim /etc/profile
在最后增加一句
export PATH=/usr/local/mysql/bin:$PATH
[root@localhost mysql]# source /etc/profile

开机自动启动
[root@localhost mysql]# cd /etc/init.d [root@localhost init.d]# chmod 755 /etc/init.d/mysql [root@localhost init.d]# chkconfig --add mysql [root@localhost init.d]# chkconfig --level 345 mysql on

十、在使用localhost进行连接的时候出现ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)的报错信息

解决方式:https://www.cnblogs.com/jpfss/p/9734487.html

本人这里暂未解决该问题(不影响使用)

 

十一、开放mysql的端口号

由于linux使用的为centOS7iptable命令不再使用

开启3306端口
# firewall-cmd --zone=public --add-port=3306/tcp --permanent
查询端口号3306是否开启:
# firewall-cmd --query-port=3306/tcp
重启防火墙:
# firewall-cmd --reload
查询有哪些端口是开启的:
# firewall-cmd --list-port

至此安装完成,可以开始使用啦。

 

 附mysql下载链接:

链接:https://pan.baidu.com/s/1k-rgSqQ296YzC86bhVnQ_A
提取码:dtoa

posted @ 2020-04-28 21:41  像风一样无影无起  阅读(320)  评论(0)    收藏  举报