• Linux安装MySQL


    Linux安装MySQL

    centos7上使用yum安装mysql5.7

    配置yum源

    yum install https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm -y
    
    • 1

    最新的yum源rpm包在这里下载:https://dev.mysql.com/downloads/repo/yum/

    安装启动mysql

    yum -y install yum-utils
    yum-config-manager --disable mysql80-community
    yum-config-manager --enable mysql57-community
    yum -y install mysql-community-server
    systemctl start mysqld.service
    
    • 1
    • 2
    • 3
    • 4
    • 5

    修改root密码

    安装完成后会随机生成root密码,首先查看root密码:

    grep 'temporary password' /var/log/mysqld.log
    
    • 1

    使用随机密码登录命令行,修改密码策略,修改密码:

    mysql -u root -p
    set global validate_password_policy=0;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin12345';
    
    • 1
    • 2
    • 3

    查看密码策略

    show variables like 'validate_password%';       
    
    • 1

    密码策略共有以下几种: validate_password_policy:密码安全策略,默认MEDIUM策略

    策略检查规则
    0 or LOWLength
    1 or MEDIUMLength; numeric, lowercase/uppercase, and special characters
    2 or STRONGLength; numeric, lowercase/uppercase, and special characters; dictionary file

    validate_password_mixed_case_count:大小写字符长度,至少1个

    validate_password_number_count :数字至少1个

    validate_password_special_char_count:特殊字符至少1个

    validate_password_dictionary_file:密码策略文件,策略为STRONG才需要

    validate_password_length:密码最少长度

    允许远程访问

    grant all privileges on *.* to 'root'@'%' identified by 'Admin12345' with grant option;
    grant all privileges on *.* to 'root'@'localhost' identified by 'Admin12345' with grant option;
    grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'Admin12345' with grant option;
    FLUSH PRIVILEGES;
    
    • 1
    • 2
    • 3
    • 4

    查看可以访问的主机:

    use mysql;
    select host,user from user where user='root';
    
    • 1
    • 2

    设置字符集和连接数

    查询数据库编码

    show variables like 'character%';
    show variables like '%collation%';
    
    • 1
    • 2

    编辑配置文件

    vim /etc/my.cnf

    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [database]
    character_set_database=utf8mb4
    [mysqld]
    #设置监听ipv4
    bind-address=0.0.0.0
    transaction-isolation=READ-COMMITTED
    server-id=1
    log-bin
    log_bin_trust_function_creators=1
    port=3306
    max_connect_errors=99999
    max_error_count=65535
    character-set-server=utf8mb4
    lower_case_table_names=1
    max_connections=9999
    max_user_connections=8888
    wait_timeout=31536000
    interactive_timeout=31536000
    innodb_buffer_pool_size=128M
    innodb_buffer_pool_instances=1
    innodb_buffer_pool_chunk_size=128M
    max_allowed_packet=100M
    sql-mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    Linux使用压缩包安装mysql

    下载

    wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz

    解压并移动

    tar -xvf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
    mv mysql-5.7.35-linux-glibc2.12-x86_64/ /usr/local/mysql
    
    • 1
    • 2

    创建mysql用户

    groupadd mysql
    useradd -r -g mysql -s /bin/false mysql
    chown -R mysql:mysql /usr/local/mysql
    mkdir -p /usr/local/mysql/data
    #导入新的data之后再运行下面这句话
    chown -R mysql:mysql /usr/local/mysql/data
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    初始化(如果mysql提示错误 可尝试mysqld)

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

    修改系统配置文件

    cd /usr/local/mysql/support-files
    cp mysql.server /etc/init.d/mysql
    
    • 1
    • 2

    vim /etc/init.d/mysql

    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    
    • 1
    • 2

    vim /etc/my.cnf

    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [database]
    character_set_database=utf8mb4
    [mysqld]
    bind-address=0.0.0.0
    transaction-isolation=READ-COMMITTED
    server-id=1
    log-bin
    log_bin_trust_function_creators=1
    port=3306
    max_connect_errors=99999
    max_error_count=65535
    character-set-server=utf8mb4
    lower_case_table_names=1
    max_connections=9999
    max_user_connections=8888
    wait_timeout=31536000
    interactive_timeout=31536000
    innodb_buffer_pool_size=128M
    innodb_buffer_pool_instances=1
    innodb_buffer_pool_chunk_size=128M
    max_allowed_packet=100M
    sql-mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    启动

    /etc/init.d/mysql start

    登录

    mysql -uroot -p
    如果出现:-bash: mysql: command not found
    就执行: # ln -s /usr/local/mysql/bin/mysql /usr/bin --没有出现就不用执行

    输入之前初始化生成的密码,登录成功,至此安装完毕!

    设置开机自启动

    cd /etc/init.d/
    chmod +x mysql
    chkconfig --add mysql
    chkconfig --list
    chkconfig --level 345 mysql on
    
    • 1
    • 2
    • 3
    • 4
    • 5

    MySQL 8.0.27 安装

    下载

    wget --no-check-certificate https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
    
    • 1

    解压并移动

    xz -dk mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
    tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar
    mv mysql-8.0.27-linux-glibc2.12-x86_64 /usr/local/mysql
    
    • 1
    • 2
    • 3

    创建mysql用户

    groupadd mysql
    useradd -r -g mysql -s /bin/false mysql
    chown -R mysql:mysql /usr/local/mysql
    mkdir -p /usr/local/mysql/data
    chown -R mysql:mysql /usr/local/mysql/data
    
    • 1
    • 2
    • 3
    • 4
    • 5

    修改系统配置文件

    cd /usr/local/mysql/support-files
    cp mysql.server /etc/init.d/mysql
    
    • 1
    • 2

    vim /etc/init.d/mysql

    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    
    • 1
    • 2

    vim /etc/my.cnf

    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [database]
    character_set_database=utf8mb4
    [mysqld]
    basedir=/usr/local/mysql
    datadir=/usr/local/mysql/data
    bind-address=0.0.0.0
    transaction-isolation=READ-COMMITTED
    server-id=1
    log-bin
    log_bin_trust_function_creators=1
    port=20306
    max_connect_errors=99999
    max_error_count=65535
    #MySQL8推荐字符集
    character-set-server=utf8mb4
    collation-server=utf8mb4_0900_ai_ci
    lower_case_table_names=1
    max_connections=9999
    max_user_connections=8888
    wait_timeout=31536000
    interactive_timeout=31536000
    innodb_buffer_pool_size=128M
    innodb_buffer_pool_instances=1
    innodb_buffer_pool_chunk_size=128M
    max_allowed_packet=100M
    sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    初始化(如果mysql提示错误 可尝试mysqld)

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

    启动

    /etc/init.d/mysql start
    
    • 1

    登录

    mysql -uroot -p
    
    • 1

    如果出现:-bash: mysql: command not found就执行:

    ln -s /usr/local/mysql/bin/mysql /usr/bin 
    
    • 1

    输入之前初始化生成的密码,登录成功,至此安装完毕!

    修改密码

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'Admin12345';
    use mysql;
    update user set host = '%' where user = 'root';
    FLUSH PRIVILEGES;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    设置开机自启动

    cd /etc/init.d/
    chmod +x mysql
    chkconfig --add mysql
    chkconfig --list
    chkconfig --level 345 mysql on
    
    • 1
    • 2
    • 3
    • 4
    • 5

    MySQL 多实例安装

    下载

    wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz

    在安装MySQL之前,需要卸载服务器自带的MySQL包和MySQL数据库分支mariadb的包

    [root@masterdb ~]# rpm -qa|grep mysql
    [root@masterdb ~]# rpm -qa |grep mariadb
    mariadb-libs-5.5.56-2.el7.x86_64
    [root@masterdb ~]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps
    
    • 1
    • 2
    • 3
    • 4

    依赖包安装

    MySQL对libaio 库有依赖性。如果未在本地安装该库,则数据目录初始化和随后的服务器启动步骤将失败 、

    # install library

    [root@mysql mysql]# yum install libaio
    
    • 1

    对于MySQL 5.7.19和更高版本:通用Linux版本中增加了对非统一内存访问(NUMA)的支持,该版本现在对libnuma库具有依赖性 。

    # install library

    [root@mysql mysql]# yum install libnuma
    
    • 1

    创建用户和用户组

    groupadd mysql
    useradd -r -g mysql -s /bin/false mysql
    
    • 1
    • 2

    解压安装包

    [root@masterdb ~]# cd /usr/local/
    [root@masterdb local]# tar xzvf /root/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
    
    # 修改解压文件名,与前面定义的basedir相同
    [root@masterdb local]# mv mysql-5.7.24-linux-glibc2.12-x86_64/ mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建数据文件存放目录

    mkdir -p /mysql/{3306,3307,3308,3309}/data
    mkdir /var/lib/mysql
    
    chown -R mysql:mysql /usr/local/mysql
    chown -R mysql:mysql /mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建MySQL参数配置文件

    vim /etc/my.cnf

    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [database]
    character_set_database=utf8mb4
    [mysqld]
    user=mysql
    basedir = /usr/local/mysql
    bind-address=0.0.0.0
    transaction-isolation=READ-COMMITTED
    server-id=1
    log-bin
    log_bin_trust_function_creators=1
    max_connect_errors=99999
    max_error_count=65535
    character-set-server=utf8mb4
    lower_case_table_names=1
    max_connections=9999
    max_user_connections=8888
    wait_timeout=31536000
    interactive_timeout=31536000
    innodb_buffer_pool_size=128M
    innodb_buffer_pool_instances=1
    innodb_buffer_pool_chunk_size=128M
    max_allowed_packet=100M
    sql-mode="STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"
    
    [mysqld_multi]
    mysqld=/usr/local/mysql/bin/mysqld_safe
    mysqladmin=/usr/local/mysql/bin/mysqladmin
    log=/usr/local/mysql/mysqld_multi.log
    
    [mysqld30306]
    mysqld=mysqld
    mysqladmin=mysqladmin
    datadir=/mysql/30306/data
    port=30306
    server_id=30306
    socket=/mysql/30306/mysql_30306.sock
    log-error = /mysql/30306/error_30306.log
    
    [mysqld3307]
    mysqld=mysqld
    mysqladmin=mysqladmin
    datadir=/mysql/3307/data
    port=3307
    server_id=3307
    socket/mysql/3307/mysql_3307.sock
    log-error=/mysql/3307/error_3307.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    初始化数据库

    /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql/ --datadir=/mysql/3307/data
    
    • 1

    设置环境变量

    export PATH=/usr/local/mysql/bin:$PATH
    
    • 1

    使用mysqld_multi管理多实例

    # 使用mysqld_multi启动3306端口的实例
    mysqld_multi start 3306
    
    # 使用mysqld_multi启动全部实例
    mysqld_multi start
    
    # 使用mysqld_multi查看实例状态
    mysqld_multi report
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    链接数据库

    mysql -S /tmp/mysql_3306.sock -p 
    
    • 1

    修改数据库密码

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin12345';
    grant all privileges on *.* to 'root'@'%' identified by 'Admin12345' with grant  option;
    grant all privileges on *.* to 'root'@'localhost' identified by 'Admin12345' with grant  option;
    grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'Admin12345' with grant  option;
    FLUSH PRIVILEGES;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    关闭数据库

    mysqladmin -h127.0.0.1 -uroot -p -P3307 shutdown
    
    • 1

    Linux下彻底卸载mysql详解

    使用以下命令查看当前安装mysql情况,查找以前是否装有mysql

    rpm -qa|grep -i mysql
    
    • 1

    停止mysql服务、删除之前安装的mysql

    删除命令:rpm -e –nodeps 包名

      rpm -ev MySQL-client-5.5.25a-1.rhel5
      rpm -ev MySQL-server-5.5.25a-1.rhel5
    
    • 1
    • 2

    如果提示依赖包错误,则使用以下命令尝试:

     rpm -ev MySQL-client-5.5.25a-1.rhel5 --nodeps
    
    • 1

    如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1

    则用以下命令尝试:

    rpm -e --noscripts MySQL-client-``5.5``.25a-``1``.rhel5
    
    • 1

    查找之前老版本mysql的目录、并且删除老版本mysql的文件和库

    find / -name mysql
    rm -rf /var/lib/mysql
    
    • 1
    • 2

    再次查找机器是否安装mysql

    rpm -qa|grep -i mysql
    
    • 1

    mysql忘记密码

    vim /etc/my.cnf mysqld下增加参数

    skip-grant-tables                              
    
    • 1

    重启数据库直接登录mysql

    systemctl restart mysqld.service
    
    • 1

    修改密码

    UPDATE mysql.user SET authentication_string=PASSWORD('Admin12345') where USER='root';
    FLUSH PRIVILEGES;
    
    • 1
    • 2

    最后删除配置 skip-grant-tables 重启数据库服务

    备份换原

    备份所有的库

     mysqldump -h 127.0.0.1 -P 3306 -u root -p123456789aA! --single-transaction -A >dump.sql          
    
    • 1

    备份指定的库

    mysqldump -u root -p123456789aA! wordpress > /home/wordpress.sql 
    mysqldump -u root -p123456789aA! --databases wordpress > /home/wordpress.sql
    #如果数据过大
    mysqldump -u root -p -P 20306 wordpress --max_allowed_packet=1G > /home/wordpress.sql
    
    • 1
    • 2
    • 3
    • 4

    还原:

    source /home/wordpress.sql;
    
    • 1

    或者:

    mysql -u root -p wordpress < /home/wordpress.sql  
    
    • 1

    还原时取消严格校验参数

    innodb_large_prefix=1
    innodb_file_per_table = 1
    innodb_file_format = Barracuda
    innodb_strict_mode=0
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    docker基本命令
    Android UI 冻结处理方法
    嵌入式开发:在工业应用程序中优化GUI的5个技巧
    [笔记] Windows内核课程:保护模式《二》段寄存器介绍
    二分查找binary search
    Vue的详细教程--基础语法【上】
    MicroPython-On-ESP8266——8x8LED点阵模块(1)驱动原理
    Bootstrap关于盒子(盒模型)边距的设置
    WebRTC系列-SDP之编码信息收集
    halcon二维码识别简单案例
  • 原文地址:https://blog.csdn.net/wei_zhen_dong/article/details/126474799