• Linux之18——Linux下安装MySQL及远程连接MySQL


    安装方式一:通过下载官方安装包安装

    由于Linux安装MySQL会遇到各种依赖问题,本博文整理了下安装方放,避免遇到依赖问题

    查看是否自带mariadb
    rpm -qa|grep mariadb
    然后卸载
    rpm -e packagename  --nodeps
    下载完整rpm包:
    https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
    然后解压:
    tar -xvf https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-1.el7.x86_64.rpm-bundle.tar
    然后先yum安装一下net-tools库:yum -y install net-tools*
    rpm -ivh mysql-community-common-8.0.11-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-8.0.11-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-8.0.11-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm
    [root@jordy rpm]# rpm -ivh mysql-community-server-8.0.11-1.el7.x86_64.rpm
    warning: mysql-community-server-8.0.11-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
    error: Failed dependencies:
            libaio.so.1()(64bit) is needed by mysql-community-server-8.0.11-1.el7.x86_64
            libaio.so.1(LIBAIO_0.1)(64bit) is needed by mysql-community-server-8.0.11-1.el7.x86_64
            libaio.so.1(LIBAIO_0.4)(64bit) is needed by mysql-community-server-8.0.11-1.el7.x86_64
    看到报错了,是缺少libaio库:wget http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm
    然后安装该库: rpm -ivh http://mirror.centos.org/centos/6/os/x86_64/Packages/libaio-0.3.107-10.el6.x86_64.rpm

    然后yum 安装 net-tools* 库

    groupadd mysql

    useradd -g mysql mysql
    到了官方文档时间段了,看下图,图中英文翻译过来就是:
    在Unix和Unix系列系统中,有一点是很重要的,那就是确保数据库目录与文件的所有者为mysql登录账户,
    以便在你运行mysqld服务的时候,mysql服务可以对这些目录和文件进行读取与写入操作。
    如果你是以root身份运行mysqld服务,就需要确认一下,执行如下面显示的包含有--user选项的命令:
    shell> bin/mysqld --initialize --user=mysql
    shell> bin/mysqld --initialize-insecure --user=mysql
    另外,当你是以mysql的账户登录并执行程序的情况下,你可以将--user选项从命令中去掉。
    所以我在前面提到过添加mysql用户和mysql用户组,当然这步操作可做可不做。通过官方文档我们可以知道,
    如果我是root身份登录Linux系统,可以执行:mysqld --initialize --user=mysql或者mysqld --initialize-insecure --user=mysql。
    如果我是以mysql用户登录Linux系统,可以执行:mysqld --initialize或者mysqld --initialize-insecure。
    初始化mysql:
    mysqld --initialize --user=mysql
    启动mysql
    systemctl  start  mysqld
    查看刚刚初始化生成的临时密码:
    vim /var/log/mysqld.log 
    *rajC8ykZ:5y
    然后登录mysql
    mysql -u root -p
    登录后> 
    mysql> show databases;
    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
    要求重置密码:
    则重置设置下密码,比如111111
    >SET PASSWORD = PASSWORD('111111');
    >ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
    >flush privileges;
    但是报错:
    mysql> SET PASSWORD = PASSWORD('123456');
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PASSWORD('111111')' at line 1
    mysql> 

    那直接按提示alter吧:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'tangtang';

    然后就开始使用吧;

    create database study;

    use  study;

    CREATE TABLE `t_users` (    
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',    
    `account` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '登录账号',    
    `passwd` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '登录密码',    
    `salt` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '注册时生成的salt',    
    `nick` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户昵称',    
    `truename` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '真实姓名',    
    `headimg` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '用户头像地址', 
    UNIQUE KEY `id` (`id`)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

    在客户端连接远程服务器是,若遇到的如下错误:2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found 

    这是因为即从mysql5.7版本之后,默认采用了caching_sha2_password验证方式,我用的mysql8.0,于是就遇到了这个问题。

    解决办法:
    mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root账户密码' ;  意为使用旧的认证方式。

    mysql 新建用户并赋予远程访问权限

    [root@demo /]# mysql -u root -p #登录服务器数据库

    Enter password:123xxx

    #1.创建一个新用户 testuser 密码为 testuserpass

    CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'testuserpass';

    #2.创建数据库testDB

    create database testDB;

    #3.执行命令为testuser用户添加使用testDB权限

    grant all privileges on testDB.* to testuser@localhost identified by 'testuserpass';

    #4.执行命令,为testuser用户添加远程访问权限

    GRANT ALL PRIVILEGES ON testDB.* TO 'testuser'@'%' IDENTIFIED BY 'testuserpass' WITH GRANT OPTION;

    #5.刷新权限表

    flush privileges;

    回收权限

    revoke all on information_schema.* from 'testuser'@'%' ;

    安装方式二:通过docker安装(墙裂推荐) 

    1、拉取官方的最新版本的镜像:

    $ docker pull mysql:latest

    2、运行容器

    $ docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

    参数说明:

    • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
    • MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

    通过 docker ps 命令查看是否安装成功:

  • 相关阅读:
    *** 82 删除排序链表中的重复元素II
    83 删除排序链表中的重复元素
    61 旋转链表
    ASP.NET MVC3 ModelState.IsValid为false的问题
    ServletContext
    ServletConfig
    Servlet线程安全
    Servlet的一些细节(2)
    Servlet的一些细节(1)
    Servlet的接口实现类
  • 原文地址:https://www.cnblogs.com/R-bear/p/15027311.html
Copyright © 2020-2023  润新知