美文网首页
mysql的连接失败/用户新增授权/版本升级

mysql的连接失败/用户新增授权/版本升级

作者: Raral | 来源:发表于2021-04-08 09:58 被阅读0次

mysql有时本地连接不上或者远程连接不上

bug种类

  1. 远程连接不上,服务器能连接上?
  • 排除网络或防火墙问题

    通过宝塔放行端口

  • 检查MySQL配置

    netstat -a 3306

  • 检查用户权限

    use mysql;
    update user set host='%' where user = 'root';
    
  1. 服务器连接不上,远程连接上?
    基本上是 root用户密码,权限问题
  • 修改root的 host值

    use mysql;
    select host, user from user;
    #(其中 % 的意思是允许所有的ip远程访问,如果需要指定具体的某个ip就写上具体的ip即可)
    
    update user set host = '%' where user = 'root' limit 1;
    
    重启mysql;
    
    
  • 如果还是不行,可能有一个localhost 为空,引起的。


    20190813015012873.png

    基本是因为user表里面有一个 localhost 对应的user为空;
    解决方式三种:

    1. 丢弃掉localhost 对应的user
    drop user ''@localhost;
    flush privileges;
    
    1. 在my.cnf 的【mysql】区段添加
      protocol = tcp
    2. 给localhost的用户添加密码即可
    grant all privileges on *.* to 'root'@'localhost' identified by 'root';
    
    flush privileges;
    
    重启mysql
    
    

MySQL添加新用户、创建数据库、为新用户分配权限

在平常开发中,尽量不要root用户去连接数据库,需要新的用户

  1. 添加普通用户可以访问针对性的数据库
    例如: xxx_dev 只能 对 yyy_db 有所有的操作权限
  • 新建用户
create user 'xxx_dev'@'%' identified by '1235678';
flush privileges;
  • 授权表
grant all privileges on 'yyy_db'.* to 'xxx_dev'@'%' identified by '12345678' with grant option;
flush privileges;
  • 退出重新登录即可 访问到 yyy_db数据库
  1. 对root用户新增和授权
update user set authentication_string=password('qwer_qwer') where user='root';
flush privileges;
create user 'root'@'localhost' identified by 'wkl_qwer';
flush privileges;
update user set authentication_string=password('qwer_qwer') where user='root';//给localhost 设置密码

mysql 5.6 升级到 mysq 5.7

在若依框架中需要把 数据库升级,否在linux中,定时任务的表导不进去。
下载地址:
http://mirrors.sohu.com/mysql/MySQL-5.7/

#安全的停止数据库的运行
/etc/init.d/mysql.server stop

# 解压mysql tar包
tar zxf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/
cd /usr/local/

# 删除原先软连接,建立新的软连接
unlink mysql
ln -s mysql-5.7.28-linux-glibc2.12-x86_64/ mysql
        #此时,MySQL的应用程序版本已经升级完成
        #/etc/init.d/mysqld
        #/etc/profile中PATH增加的/usr/local/mysql/bin
        #都不需要做任何的改变,即可将当前系统的mysql版本升级完成
        #注意:此时只是应用程序升级完成,系统表仍然还是5.6的版本
cd /usr/local/mysql
chown root.mysql . -R
/etc/init.d/mysql.server start 

# 执行更新系统表,输入密码为原先的密码
mysql_upgrade -p -s
        #参数 -s 一定要加,表示只更新系统表,-s: upgrade-system-tables
        #如果不加-s,则会把所有库的表以5.7.9的方式重建,线上千万别这样操作
        #因为数据库二进制文件是兼容的,无需升级
        #什么时候不需要-s ? 当一些老的版本的存储格式需要新的特性,
        #                 来提升性能时,不加-s
        #即使通过slave进行升级,也推荐使用该方式升级,速度比较快
        
# 查看升级后的版本
mysql -V
# mysql  Ver 14.14 Distrib 5.7.28, for linux-glibc2.12 (x86_64) using  EditLine wrapper

升级完登录

[root@localhost mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cms                |
| mysql              |
| performance_schema |
| sys                |   # 5.7 新的sys库
| test               |
+--------------------+
6 rows in set (0.00 sec)

mysql>

相关文章

网友评论

      本文标题:mysql的连接失败/用户新增授权/版本升级

      本文链接:https://www.haomeiwen.com/subject/ykumkltx.html