linux(centos7)安装mysql8.0.18

mysql简介

mysql是一种开放源码的的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(SQL)进行数据库管理。

MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。

MySQL因为其速度、可靠性和适应性而备受关注。

 

说明

编写本文之前,根据相关安装文档,自己动手安装,走了不少弯路。

本文演示mysql8.0.18的离线包,在linux(centos7 64位)下的安装步骤,给大家、给自己做个参考。

本文的安装步骤,是在自己做安装练习的情况下编写,如果在生产环境下安装,请注意以下几项:

  1. 配置文件中,数据库文件的保存目录
  2. 配置文件中,mysql服务的端口、线程、超时等配置
  3. mysql的登录账号、密码的复杂度、保密等
  4. 其他

 

下载

官网下载linux 64位的mysql8.0.18版本

https://dev.mysql.com/downloads/mysql/

linux(centos7)安装mysql8.0.18_第1张图片

 

安装mysql

上传目录、安装目录、数据文件目录,可以自定义,本文这里是“/usr/mysql/”目录,这也是软件安装目录。

创建mysql目录

“mkdir /usr/mysql”,创建mysql目录

上传mysql

上传mysql压缩包

linux(centos7)安装mysql8.0.18_第2张图片解压mysql

注意:mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz文件的后缀是.tar.xz,不是.tar.gz,所以解压命令的参数有所不同。

“tar xvJf /usr/mysql/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz -C /usr/mysql/”,解压msyql压缩包

 linux(centos7)安装mysql8.0.18_第3张图片

linux(centos7)安装mysql8.0.18_第4张图片

重命名mysql

“mv /usr/mysql/mysql-8.0.18-linux-glibc2.12-x86_64 /usr/mysql/mysql”重命名文件夹

实际上可以不做,只是为了让文件夹名字短点。

linux(centos7)安装mysql8.0.18_第5张图片

创建data目录

“mkdir /usr/mysql/mysql/data”,创建mysql的数据目录,可以使用其他目录。如果是生产环境,该数据库目录请使用分区较大的目录,或者分布式文件系统的目录

linux(centos7)安装mysql8.0.18_第6张图片

 

安装、运行mysql时候,一般不用root用户,因此创建mysql组和mysql用户

创建mysql组

“groupadd mysql”,创建mysql用户组

创建mysql用户

“useradd -r -g mysql mysql”,创建mysql用户,使用-r参数表示mysql用户是一个系统用户,不能登录

进入mysql目录

“cd /usr/mysql/mysql”,进入mysql目录

修改拥有者用户

“chown mysql:mysql -R ./”,修改mysql目录下的所有文件、文件夹的拥有者为mysql组的mysql用户

linux(centos7)安装mysql8.0.18_第7张图片

修改读写权限

“chmod -R 777 /usr/mysql/mysql”,修改mysql文件夹、文件的读写权限

mysql安装、运行,使用的是mysql用户,需要给mysql用户对mysql目录的拥有权限、读写权限。

linux(centos7)安装mysql8.0.18_第8张图片

安装mysql

“/usr/mysql/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/mysql/mysql/data --basedir=/usr/mysql/mysql”,初始化mysql

/usr/mysql/mysql/bin/mysqld:mysql的相关安装文件目录

--user:使用哪个用户安装mysql

--datadir:mysql数据库的数据存放目录,

--basedir:mysql数据库的根目录

  linux(centos7)安装mysql8.0.18_第9张图片

注意最后一行,这也是和之前版本不同的地方,它给了root一个初始密码,后面要登录的时候要用到这个密码。

一定要记住最后一行的root的初始密码。

一定要记住最后一行的root的初始密码。

一定要记住最后一行的root的初始密码。

拷贝my.cnf

“cp /usr/mysql/mysql/support-files/my_default.cnf /etc/my.cnf”,拷贝mysql的配置文件到etc目录

注意:support-files目录下是没有my_default.cnf这个文件的,需要自己创建,文件中的内容如下

注意:basedir、datadir、port、socket这几个配置项

 

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the

# *** default location during install, and will be replaced if you

# *** upgrade to a newer version of MySQL.

 

[mysqld]

 

 

 

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

 

# 一般配置选项

basedir = /usr/mysql/mysql

datadir = /usr/mysql/mysql/data

port = 3306

socket = /usr/mysql/mysql/mysqld.sock

character-set-server=utf8

 

 

#下面是可选项,要不要都行,如果出现启动错误,则全部注释掉,保留最基本的配置选项,然后尝试添加某些配置项后启动,检测配置项是否有误

back_log = 300

max_connections = 3000

max_connect_errors = 50

table_open_cache = 4096

max_allowed_packet = 32M

#binlog_cache_size = 4M

 

max_heap_table_size = 128M

read_rnd_buffer_size = 16M

sort_buffer_size = 16M

join_buffer_size = 16M

thread_cache_size = 16

# query_cache_size = 128M

# query_cache_limit = 4M

ft_min_word_len = 8

 

thread_stack = 512K

transaction_isolation = REPEATABLE-READ

tmp_table_size = 128M

#log-bin=mysql-bin

long_query_time = 6

 

 

server_id=1

 

innodb_buffer_pool_size = 1G

innodb_thread_concurrency = 16

innodb_log_buffer_size = 16M

 

 

innodb_log_file_size = 512M

innodb_log_files_in_group = 3

innodb_max_dirty_pages_pct = 90

innodb_lock_wait_timeout = 120

innodb_file_per_table = on

 

[mysqldump]

quick

 

max_allowed_packet = 32M

 

[mysql]

no-auto-rehash

default-character-set=utf8

safe-updates

 

[myisamchk]

key_buffer = 16M

sort_buffer_size = 16M

read_buffer = 8M

write_buffer = 8M

 

[mysqlhotcopy]

interactive-timeout

 

[mysqld_safe]

open-files-limit = 8192

 

[client]

#/bin/bash: Q: command not found

注:后边启动mysql服务时候,因为query_cache_size、query_cache_limit两个参数不能正常安装,因此注释掉这两个参数。各参数的意义自行查找。

编辑my.cnf

可以使用linux的vi编辑器(类似window的记事本),为了省事,这里直接使用Xftp,用记事本方式,打开/etc/my.cnf,修改mysql的目录

basedir:mysql的安装目录

datadir:mysql的数据库文件目录

port:端口号

socket:客户端和服务器端,建立连接的socket文件

character-set-server:mysql的数据库编码

linux(centos7)安装mysql8.0.18_第10张图片

拷贝mysqld

“cp /usr/mysql/mysql/support-files/mysql.server /etc/init.d/mysqld”,拷贝mysql的配置文件到etc目录

编辑mysqld

使用Xftp,用记事本方式,打开/etc/init.d/mysqld,编辑mysqld,修改mysql的目录basedir、datadir

linux(centos7)安装mysql8.0.18_第11张图片

启动mysql

 service mysqld start,启动mysql服务。

这里启动出现了报错,将my.cnf中的query_cache_size、query_cache_limit两个配置项注释掉,即可正常启动。

通过“netstat -ntlp”查看端口、进程,可以看到端口为3306的mysql进程。

linux(centos7)安装mysql8.0.18_第12张图片

停止mysql

“service mysqld stop”,停止mysql服务

linux(centos7)安装mysql8.0.18_第13张图片

修改root密码,远程登录

  1.  “ln -s /usr/mysql/mysql/mysqld.sock /tmp/mysql.sock”,建立快捷连接,“/usr/mysql/mysql/mysqld.sock”是my.cnf中配置的“socket”的值。客户端与mysql服务器建立连接的socket文件默认好像是/tmp/mysql.sock,因此建立快捷连接。

linux(centos7)安装mysql8.0.18_第14张图片

  1. “service mysqld stop”,停止mysql
  2. “/usr/mysql/mysql/bin/mysqld_safe --skip-grant-tables &”,安全模式重启mysql,之后输入“bg”,使mysql后台运行。

linux(centos7)安装mysql8.0.18_第15张图片

  1. “/usr/mysql/mysql/bin/mysql -p”,用安装mysql时的密码,登录mysql

linux(centos7)安装mysql8.0.18_第16张图片

  1. 修改密码

use mysql;

set SQL_SAFE_UPDATES=0;

select host, user from user;

update user set host = '%' where user='root';

select host, user from user;

flush privileges;

ALTER USER 'root'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'MyPwd@123';

flush privileges;

set SQL_SAFE_UPDATES=1;

exit;

linux(centos7)安装mysql8.0.18_第17张图片

  1. 修改密码以后,使用“service mysqld stop”关闭安全模式启动的mysql服务,再使用“service mysqld start”重新启动mysql服务,否则会影响远程连接数据库。如果不能关闭mysql服务,可以直接杀死进程,在重新启动mysql服务。

说明:

  1. 为了防止随意修改数据,数据库添加了SQL_SAFE_UPDATES参数,修改数据前将SQL_SAFE_UPDATES改为0,即执行sql:set SQL_SAFE_UPDATES=0;
  2. 修改密码时,总是报如下错误:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

修改密码前,先执行“flush privileges;”,先刷新权限表,即可解决

  1. 修改数据之后,需要将SQL_SAFE_UPDATES参数改回去,执行sql:set SQL_SAFE_UPDATES=1;
  2. 新版本之后,密码要求复杂性,大小写、数字、特殊字符需要包含。

centos防火墙

centos中,在防火墙中,添加3306端口,或者直接关闭防火墙,但是不建议直接关闭防火墙。

linux(centos7)安装mysql8.0.18_第18张图片

或者通过命令的方式,允许端口3306通过防火墙。

测试连接

使用navicat客户端,连接mysql服务。

linux(centos7)安装mysql8.0.18_第19张图片

开机启动mysql

  1. “chmod +x /etc/init.d/mysqld”,修改权限
  2. “chkconfig --add mysqld”,把mysql注册为开机启动的服务
  3. “shutdown -r now”,重启linux

linux(centos7)安装mysql8.0.18_第20张图片

 

文章中,难免有错误,请大家批评指正。

你可能感兴趣的:(mysql,linux)