Instale a versão descompactada do mysql5.7 no Linux, e minha namorada pode instalar o banco de dados após ler isto

Prefácio:

Sistema Linux centos7.2, mysql versão 5.7, li muitos tutoriais na Internet, a maioria deles falhou, e os passos de instalação escritos por muitas pessoas têm muitos problemas. Não vou explicá-los um por um aqui. Este é um tutorial de instalação de alta qualidade. Passe-o uma vez para garantir que sua namorada possa vê-lo com sucesso.

1. Preparação preliminar

1. Desinstale a versão antiga do MySQL

Observe que se for um sistema centos completo, você não precisa instalar dependências relacionadas, mas pode executar o comando de instalação se não souber se instalou as dependências relacionadas (pode demorar muito). Um endereço do sistema centos7.2 está anexado aqui, não há necessidade de instalar nenhuma dependência, o sistema está pronto para ser usado
Endereço: https://pan.baidu.com/s/1SRiVqTJCyHoaE1cxjiL_Tg
Código de extração: gh26

查看rpm包
rpm -qa|grep mysql 若有可用rpm -e卸载

查找mysql残留包,有则删除,没有则忽略
find / -name mysql

安装相关依赖

yum -y install make gcc-c++ cmake bison-devel ncurses-devel numactl libaio

创建用户和用户组

groupadd mysql
useradd -s /sbin/nologin -g mysql -M mysql

2. Baixe e descompacte o pacote de instalação binário

O download e o pacote de instalação aqui podem ser mais lentos, forneça um disco de rede para baixar a versão 5.7.31, a instalação pró-teste está disponível, as outras etapas permanecem inalteradas
Endereço: https://pan.baidu.com/s/1JwCtrIL7dsbaZexoBHboUw
Código de extração: 4tub

cd /usr/local/
# wget下载或者本地下载后上传
wget https://downloads.mysql.com/archives/get/file/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
# 解压安装包
tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
# 解压后为了方便后面操作可把解压后文件名修改为mysql
mv mysql-5.7.23-linux-glibc2.12-x86_64 mysql
# 更改文件夹所属
chown -R mysql.mysql /usr/local/mysql/

Três. Crie diretórios e arquivos relacionados ao mysql

mkdir -p /data/mysql/{
    
    data,logs,tmp}
# 更改文件夹所属
chown -R mysql.mysql /data/mysql/

# 创建mysql配置文件my.cnf,已存在的话直接将内容覆盖就行
vi /etc/my.cnf
# 简单模板如下(可直接复制使用)[client]
port            = 3306
socket          = /data/mysql/tmp/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql        
datadir = /data/mysql/data  
port = 3306               

socket = /data/mysql/tmp/mysql.sock
pid-file  = /data/mysql/tmp/mysqld.pid
tmpdir = /data/mysql/tmp    
skip_name_resolve = 1
symbolic-links=0
max_connections = 2000
group_concat_max_len = 1024000
sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names = 1
log_timestamps=SYSTEM
character-set-server = utf8
interactive_timeout = 1800  
wait_timeout = 1800
max_allowed_packet = 32M
binlog_cache_size = 4M
sort_buffer_size = 2M
read_buffer_size = 4M
join_buffer_size = 4M
tmp_table_size = 96M
max_heap_table_size = 96M
max_length_for_sort_data = 8096

#logs
server-id = 1003306
log-error = /data/mysql/logs/error.log
slow_query_log = 1
slow_query_log_file = /data/mysql/logs/slow.log
long_query_time = 3
log-bin = /data/mysql/logs/binlog
binlog_format = row
expire_logs_days = 15
log_bin_trust_function_creators = 1
relay-log = /data/mysql/logs/relay-bin
relay-log-recovery = 1  
relay_log_purge = 1  

#innodb  
innodb_file_per_table = 1
innodb_log_buffer_size = 16M
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
innodb_flush_neighbors = 0
innodb_flush_method = O_DIRECT
innodb_autoinc_lock_mode = 2
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_buffer_pool_size = 2G

Quatro. Configure mysql.server

cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysql
vi /etc/init.d/mysql

# 修改目录位置
basedir=/usr/local/mysql
datadir=/data/mysql/data

 # 注册开机启动服务
chkconfig --add mysql
chkconfig --list

Cinco. Adicionar variáveis ​​de ambiente

echo "PATH=$PATH:/usr/local/mysql/bin  " >> /etc/profile  
source /etc/profile

Seis. Inicialize o mysql

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

# 临时密码保存在errlog中 
# 获取临时密码,该密码第一次登陆mysql时会被使用,注意密码可能是分号结尾,一起复制
more /data/mysql/logs/error.log |grep password

Sete. Inicie o serviço mysql e altere a senha

# 启动mysql服务
service mysql start
# 使用初始密码登录mysql服务 并修改密码,下面所示是将密码改为root
mysql -uroot -p
alter user 'root'@'localhost' identified by 'root';
flush privileges;

8. Problema de conexão do Navicat com mysql 10038

O problema frequentemente relatado é 10038, conforme mostrado na figura abaixo. Existem
Insira a descrição da imagem aqui
basicamente três soluções coletadas na Internet, conforme segue

1. A tabela do usuário altera o valor do host do usuário root

Faça login no cliente mysql no sistema e veja as informações da tabela do usuário como segue

mysql -u root -p
# 登录成功后
use mysql;
select user,host from user;

Os resultados são os seguintes:
Insira a descrição da imagem aqui
Se o host correspondente à raiz não tem% no resultado encontrado acima, você precisa alterá-lo (várias raízes, uma das quais corresponde a%), use o seguinte comando para alterar.

# 更改root的host值
update user set host = '%' where user = 'root';
# 刷新(改完一定要刷新)
flush privileges;

Depois de fazer isso, você pode tentar o teste de conexão. Se ainda não funcionar, continue com o segundo método.

2. Verifique o valor do endereço de ligação do arquivo de configuração my.cnf

O arquivo de configuração my.cnf é geralmente armazenado em /etc/my.cnf, e pode ser diferente.Se você não tiver certeza, você pode usar o comando find -name para verificar a localização do arquivo. A operação é a seguinte

# 全盘查找my.cnf(若是用户权限不足,可切换root查找)
find / -name my.cnf
cd /etc/mysql/my.cnf
vi my.cnf
# 将以下内容
# bind-address=127.0.0.1
更改为以下内容
bind-address=0.0.0.0

Após as operações acima, você pode continuar a testar se a conexão pode ser bem-sucedida. Se esta parte não for alterada, a conexão remota não pode ser feita. Alterar esta parte permite a conexão remota. Se ainda não funcionar, as nove conquistas são um problema de firewall.

3. Verifique o status do firewall e desligue-o

Alguns números de porta não podem passar pelo firewall por padrão, e 3306 é um número muito comum, então quando usamos uma conexão remota, é impossível conectar. Podemos usar diretamente o comando para ver o status do firewall, desligar o firewall e testá-lo novamente. Como segue:
Nota:
Sistemas diferentes possuem comandos diferentes.Se os sistemas são inconsistentes, você pode consultar comandos específicos.Centos6 firewall é iptables, centos7 é firewalld, e os comandos de operação também são diferentes.

# 查看防火墙放行的端口
firewall-cmd --list-ports
# centos7查看防火墙的状态
sudo systemctl status firewalld
# centos7关闭防火墙(临时更改,重启失效)
sudo systemctl stop firewalld
# centos7打开防火墙(临时更改,重启失效)
sudo systemctl start firewalld

Caso não tenha sido resolvido, recomenda-se usar a solução 4 universal , que definitivamente estará resolvido. Se assim for, o comando acima é apenas para desligar temporariamente o firewall. Este método certamente não resolverá o problema para sempre. Existem duas soluções permanentes, uma é fechar permanentemente a parede de proteção, a outra é permitir que o firewall libere a porta 3306 e é recomendado usar o firewall para liberar a porta 3306. A operação é a seguinte:

  1. centos7 desligue permanentemente o firewall

    # 关掉系统重启时重新启动防火墙的功能
    sudo systemctl disable firewalld
    # 关闭防火墙
    sudo systemctl stop firewalld
    # 重启后生效
    reboot
    

    Reinicie neste momento, o firewall está fechado, se você precisar ligar o firewall, o comando é o seguinte

    # 开启系统重启时重新启动防火墙的功能
    sudo systemctl enable firewalld
    # 开启防火墙
    sudo systemctl start firewalld
    # 重启后生效
    reboot
    
  2. Deixe o firewall permitir a porta 3306.

    # 放行3306端口,然后一定要重启防火墙
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    # 重启防火墙
    systemctl restart firewalld.service
    # 再次查看端口有没有放行成功,下面出现3306就表示成功了
    firewall-cmd --list-ports
    
    # 参数解释
    # –zone 用以标识该端口放行的范围
    # --add-port=3306/tcp 标识端口与通讯协议
    # --permanent 标识重启放行依然生效
    

4. A solução universal

Os três métodos acima ainda não funcionam? Não tente, pode levar menos tempo para instalar um novo do que para encontrar uma solução para o problema. Use o centos7.2 fornecido no artigo e instale o pacote com mysql5.7.31 da nova instalação (o artigo tem um link de disco de rede) e siga o processo acima para garantir isso. No entanto, se você não estiver conectado durante a conexão remota, pode simplesmente desligar o firewall. Testei todo o processo e não há problema. Espero que seja útil para aqueles que estão confusos.

Resumindo

Depois de muitas tentativas, procurei alguns tutoriais que estavam errados e finalmente concluí, o processo ainda é um pouco tortuoso, para não cometer o mesmo erro da próxima vez, resumi o artigo sobre a instalação desta versão para corrigir o 10038 problem, online Muitas pessoas fornecem artigos tutoriais, sem falar que a versão do sistema operacional realmente não faz sentido. Mesmo que as diferentes versões do centos sejam diferentes, eles também levam um aviso. Ao operar, você deve determinar o problema de acordo com a versão , caso contrário, mesmo se você encontrar uma alta probabilidade, também não pode ser usado.

Apoie a originalidade, este artigo refere-se a este artigo. https://blog.csdn.net/wanghao112956/article/details/90748883

Acho que você gosta

Origin blog.csdn.net/m0_46897923/article/details/115110747
Recomendado
Clasificación