linux下安装配置mysql

首先检查自己的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
 
   然后验证通过,等会再试连接即可成功。

猜你喜欢

转载自blog.csdn.net/q5706503/article/details/83590626