【工具】云服务器搭建数据库

目录

Mysql数据库

Redis数据库

Mysql数据库

Ubuntu安装mysql

1.依次执行下述命令更新软件包和安装mysql

1
2
3
4
5
# 更新软件包列表
sudo apt update

# 安装mysql
sudo apt-get install mysql-server mysql-client

2.初始化配置msql规则

  • 执行下述语句
    1
    sudo mysql_secure_installation
  • Enter current password for root (enter for none):<–初次运行直接回车
  • xxx<-是否安装验证密码插件,建议No,因为安装后会限制简单密码的设置
  • Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
  • New password: <– 设置root用户的密码
  • Re-enter new password: <– 再输入一次你设置的密码
  • Remove anonymous users? [Y/n]<–是否删除匿名用户,生产环境建议删除,所以直接回车
  • Disallow root login remotely? [Y/n] <–禁止root远程登录?根据自己的需求选择Y/n并回车
  • Remove test database and access to it? [Y/n] <– 是否删除安装时自动创建的test数据库,直接回车(根据个人需求)
  • Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车

mysql配置

1.配置mysql权限

  • 进入mysql环境
    1
    mysql -u root -p
  • 创建远程连接的用户
    1
    2
    3
    4
    mysql>CREATE USER 'root'@'%' IDENTIFIED BY '123456';

    # '%'表示任意ip地址都可以用这个用户访问
    # root是用户名,123456是密码
  • 给这个用户赋予所有操作的权限
    1
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
  • 刷新
    1
    mysql>FLUSH PRIVILEGES;
  • 退出到控制台并重启mysql
    1
    2
    3
    mysql>quit;

    service mysql start

2.允许远程连接

  • 修改/etc/mysql/mysql.conf.d/mysqld.cnf,将bind-address = 127.0.0.1前面加# 注释掉
    1
    vim /etc/mysql/mysql.conf.d/mysqld.cnf

远程连接

1.Navicat配置ip(云服务器公网ip)、用户名、密码和端口3306后即可连接

可能会出现的问题

1.mysql授权时使用以下语句报错sql语句不合法

1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'WITH GRANT OPTION;
  • 原因:在Mysql 8版本必须分两步来实现设置用户权限【先创建用户、在对该用户分配用户权限】,最后刷新权限
  • 解决办法:先创建,再分配权限即可
    1
    2
    mysql>CREATE USER 'root'@'%' IDENTIFIED BY '123456';
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

2.远程连接报10038错误

  • 原因:云服务器3306端口未开放
  • 解决办法:安全组设置,然后重启云服务器
    • 优先级:1
    • 协议类型:自定义TCP
    • 端口范围:3306/3306
    • 授权对象:0.0.0.0/0

3.远程连接报1251错误

  • 原因:mysql 8采用另一种密码加密方式
  • 解决办法:把root用户的密码加密方式改成老版本(另一种方法是更新Navicat)
    1
    2
    3
    4
    5
    mysql>SELECT host,user,plugin,authentication_string From mysql.user;

    mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

    mysql>FLUSH PRIVILEGES;
    • 如果修改密码的时候报failed for ‘root‘@’%’错误,那么还需要依次执行以下语句
      1
      2
      3
      mysql>update mysql.user set Host='%' where User='root';

      mysql>flush privileges;

4.远程连接报1045错误

  • 原因:远程没有权限或密码错误
  • 解决办法:更改mysql设置的远程用户的密码
    1
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

Redis数据库

Ubuntu安装Redis

1.依次执行下述命令更新软件包和安装Redis

1
2
3
4
5
# 更新软件包列表
sudo apt update

# 安装Redis
sudo apt-get install redis-server

2.配置文件

  • 打开配置文件
    1
    sudo vim /etc/redis/redis.conf
  • 添加密码
    1
    2
    3
    4
    requirepass 123456

    # 表示密码为123456,如果把requirepass注释掉就说明不需要密码
    # 如果不设密码的话就要把protected-mode改成no
  • 开启Redis的远程连接
    1
    2
    3
    4
    #bind 127.0.0.1

    # 把这行注释掉,不然默认绑定本地连接
    # 或者改成bind 0.0.0.0表示绑定本机上的所有ip地址
  • 更改端口
    1
    port 6379
  • 保存配置后重启Redis
    1
    sudo service redis-server restart

3.使用以下命令可以看Redis运行的是哪个端口

1
ps -aux|grep redis

4.
使用以下命令可以建立一个交互式连接

1
2
3
redis-cli -h 127.0.0.1 -p 6379

# 如果设置了密码要用这个命令输入密码auth "123456"

可能会出现的问题

1.No connection could be made because the target machine actively refused it

  • 原因:Redis拒绝远程访问
  • 注释掉配置文件的bind 127.0.0.1并设置密码,或注释掉配置文件的bind 127.0.0.1并关闭protected-mode

2.NOAUTH Authentication required.

  • 原因:Redis设置了密码
  • 解决办法:用这个命令输入密码auth “xx”

3.云服务器上的端口开放了,但是远程连接超时

  • 原因:安全组未开放,c或s有一端的防火墙设置
  • 解决办法:开放安全组,防火墙设置开放该端口,或者换热点(某些网络会自动墙掉他认为不安全的地址)