首先检查自己的linux系统是32位还是64位,到官网下载相应版本的mysql, 并将.tar.gz压缩包传到/usr 目录下
不会传的同学, 看一下另一篇讲解怎么从windows给linux传文件:
https://mp.csdn.net/postedit/83550498
传完不在/usr文件夹,百度一下搜索指令,和移动文件指令, 放到/usr下再继续下面部分
准备系统帐户
groupadd mysql #添加用户组
useradd -r -g mysql mysql #添加mysql用户
解压
进入/usr文件夹解压mysql到当前文件夹:(名字太长时按TAB自动补全)
cd /usr
tar -zxvf mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz
解压完成 ll 指令查看一下(红的是压缩包, 蓝色的是解压完的文件)
给文件夹重命名
mv /usr/local/mysql-5.7.13-linux-glibc2.5-x86_64 /usr/local/mysql
新建目录放数据
mkdir mysql/data
默认是没有这个文件夹, 用来放数据
更改mysql目录下所有的目录及文件夹所属组合用户
cd /usr/
chown -R mysql mysql/
chgrp -R mysql mysql/
cd mysql/
ll
安装链接库文件
yum install libaio-devel.x86_64
会出现提示是否下载, 输入y回车:
最后会有complete提示
安装和初始化数据库
bin/mysqld --initialize --user=mysql --basedir=/usr/mysql --datadir=/usr/mysql/data
这里生成了一个临时密码(记住自己的) : hhGlpiP<b0oK
bin/mysql_ssl_rsa_setup --datadir=/usr/mysql/data
进入mysql
cd support-files
查看是否存在my-default.cnf文件,如果存在直接copy到/etc/my.cnf文件中
cp my-default.cnf /etc/my.cnf
然后发现这个版本没有my-default......
如果像我一样没有的话,创建一个my-default.cnf并写入以下内容再执行上述命令
#dvice 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
datadir = /usr/mysql/data
port = 3306
#socket = /temp/mysqld.sock
socket = /var/run/mysqld/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
socket = /var/run/mysqld/mysqld.sock
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]
loose-default-character-set = utf8
回到support-files文件夹:
cd /usr/mysql/support-files
copy文件:
cp mysql.server /etc/init.d/mysqld
修改basedir= 自己的路径 修改datadir= 自己的路径
vim /etc/init.d/mysql
修改完成按ESC退出编辑模式 输入:wq! 保存并退出vim编辑器
启动mysql
bin/mysqld_safe --user=mysql &
什么都不输入点回车
进入bin目录
cd /usr/mysql/bin
登陆
./mysql -uroot -p
输入临时密码(输入不显示, 输完回车)
进入成功
修改MySQL的root密码
SET PASSWORD = PASSWORD('root');
此时mysql只有本地localhost可以访问
修改可远程访问
use mysql
update user set host = '%' where user = 'root';
重启MySQL服务
先退出mysql
/etc/init.d/mysqld restart
我的在这重启失败了:
可以看到我的mysql安装在/user下, 他却在mysql/local去找,
所以我把mysqld文件中的路径写上了自己的路径就好了
vim /etc/init.d/mysqld
按i键编辑
按ESC退出编辑, 输入 :wq! 保存并退出,再次重启就好了
到这里就配置完了, 测试远程连接:
mysql -h 你的公网ip -P 3306 -u root -p
回车输入密码
有的系统无法生成:/var/run/mysqld 汇报 如下错误:
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists
The server quit without updating PID file (/usr/local/mysql/data/mysql.pid)
解决办法 :
mkdir /var/run/mysqld
chown -R mysql:mysql /var/run/mysqld
chmod 755 /var/run/mysqld
再启动mysql就可以了
远程连接失败的, 考虑防火墙, 如果是云服务器, 比如阿里云, 打开3306端口(默认关闭)
去阿里云服务器的控制器配置安全组规则,
点击云服务器ESC->网络和安全->安全组;进入点击最后的 配置规则,
啊然后看没有3306端口,添加安全组规则,添加
协议类型:MY SQL(3306);
授权对象:0.0.0.0/0
然后验证通过,等会再试连接即可成功。