mysql是一种开放源码的的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(SQL)进行数据库管理。
MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
MySQL因为其速度、可靠性和适应性而备受关注。
编写本文之前,根据相关安装文档,自己动手安装,走了不少弯路。
本文演示mysql8.0.18的离线包,在linux(centos7 64位)下的安装步骤,给大家、给自己做个参考。
本文的安装步骤,是在自己做安装练习的情况下编写,如果在生产环境下安装,请注意以下几项:
官网下载linux 64位的mysql8.0.18版本
https://dev.mysql.com/downloads/mysql/
上传目录、安装目录、数据文件目录,可以自定义,本文这里是“/usr/mysql/”目录,这也是软件安装目录。
“mkdir /usr/mysql”,创建mysql目录
上传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压缩包
“mv /usr/mysql/mysql-8.0.18-linux-glibc2.12-x86_64 /usr/mysql/mysql”重命名文件夹
实际上可以不做,只是为了让文件夹名字短点。
“mkdir /usr/mysql/mysql/data”,创建mysql的数据目录,可以使用其他目录。如果是生产环境,该数据库目录请使用分区较大的目录,或者分布式文件系统的目录。
安装、运行mysql时候,一般不用root用户,因此创建mysql组和mysql用户
“groupadd mysql”,创建mysql用户组
“useradd -r -g mysql mysql”,创建mysql用户,使用-r参数表示mysql用户是一个系统用户,不能登录
“cd /usr/mysql/mysql”,进入mysql目录
“chown mysql:mysql -R ./”,修改mysql目录下的所有文件、文件夹的拥有者为mysql组的mysql用户
“chmod -R 777 /usr/mysql/mysql”,修改mysql文件夹、文件的读写权限
mysql安装、运行,使用的是mysql用户,需要给mysql用户对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数据库的根目录
注意最后一行,这也是和之前版本不同的地方,它给了root一个初始密码,后面要登录的时候要用到这个密码。
一定要记住最后一行的root的初始密码。
一定要记住最后一行的root的初始密码。
一定要记住最后一行的root的初始密码。
“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两个参数不能正常安装,因此注释掉这两个参数。各参数的意义自行查找。
可以使用linux的vi编辑器(类似window的记事本),为了省事,这里直接使用Xftp,用记事本方式,打开/etc/my.cnf,修改mysql的目录
basedir:mysql的安装目录
datadir:mysql的数据库文件目录
port:端口号
socket:客户端和服务器端,建立连接的socket文件
character-set-server:mysql的数据库编码
“cp /usr/mysql/mysql/support-files/mysql.server /etc/init.d/mysqld”,拷贝mysql的配置文件到etc目录
使用Xftp,用记事本方式,打开/etc/init.d/mysqld,编辑mysqld,修改mysql的目录basedir、datadir
“service mysqld start”,启动mysql服务。
这里启动出现了报错,将my.cnf中的query_cache_size、query_cache_limit两个配置项注释掉,即可正常启动。
通过“netstat -ntlp”查看端口、进程,可以看到端口为3306的mysql进程。
“service mysqld stop”,停止mysql服务
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;
说明:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
修改密码前,先执行“flush privileges;”,先刷新权限表,即可解决
centos中,在防火墙中,添加3306端口,或者直接关闭防火墙,但是不建议直接关闭防火墙。
或者通过命令的方式,允许端口3306通过防火墙。
使用navicat客户端,连接mysql服务。
文章中,难免有错误,请大家批评指正。