linux 下安装MySQL

207 阅读4分钟

安装参考:zhuanlan.zhihu.com/p/64080934
设置密码参考:cloud.tencent.com/developer/a…

  • 安装

    sudo apt update    
    sudo apt install mysql-server -y
    
  • 查看状态

    sudo systemctl status mysql.service
    
  • 查看版本信息

    sudo mysqladmin -u root version -p  
    # 或者登录后键入  
    status
    
  • 使用帮助

    mysql --help
    
  • 启动服务

    sudo systemctl start mysql.service       
    # 开机自启动 软件由 systemd 管理才行
    sudo systemctl enable mysql.service       
    # 重启
    sudo service mysql restart;
    
  • 登陆

    mysql -u root -p  -h [主机名]
    
  • 停止服务

    sudo systemctl stop mysql.service && sudo systemctl disable mysql.service
    
  • 设置密码
    逻辑思路:

    1. 通过/etc/mysql/debian.cnf中的默认用户登陆mysql
    2. 使用命令设置密码
    # 查看默认用户
    cat /etc/mysql/debian.cnf
    

    显示

    # Automatically generated for Debian scripts. DO NOT TOUCH!
    [client]
    host     = localhost
    user     = debian-sys-maint
    password = UA0YeS550GXbLNl0
    socket   = /var/run/mysqld/mysqld.sock
    [mysql_upgrade]
    host     = localhost
    user     = debian-sys-maint
    password = UA0YeS550GXbLNl0
    socket   = /var/run/mysqld/mysqld.sock
    
    

    以默认用户登陆并设置密码

    mysql -u debian-sys-maint -p    
    use mysql;
    # 重新设置密码    
    # 可能提示密码强度不够
    # set global validate_password_policy=0;
    # set global validate_password_length=1;   
    UPDATE user SET authentication_string=PASSWORD('123456') where USER='root';  
    # set plugin
    update user set authentication_string =password('123456'),plugin='mysql_native_password' where user='root';
    
  • 解决不加sudo就报错access denied for user ‘root’@’localhost'

    # 先以 sudo root 登陆
    sudo mysql -u root -p    
    # 然后  
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';  
    # 之后即可  
    mysql -u root -p
    
  • 允许远程登陆**注意,Mysql 8.0 以上操作的是第二种一种,详见下面**

    • 登陆 mysql赋予远程访问权限

      use mysql;
      grant all privileges on *.* to 'root'@'%' identified by '123456';    
      
      # 8.0 之后的版采用以下    
      # 实际是在添加 root 用户,并赋权  
      # 一般到这步创建的用户才是正儿八经的用户,之前的用户应该都只是 mysql 的默认用户,比如是 /etc/mysql/debian.cnf;或者在8.0以上安装时键入root用户密码的那个临时用户  
      # 这两步很关键,一般就是这里改下权限,下面再改下监听端口 0.0.0.0 就开启了远程权限  
      # 防火墙可选步骤, Ubuntu 18.04 没做防火墙设置也可
      create user root@'%' identified by '123456';  
      grant all privileges on *.* to 'root'@'%' with grant option;
      # 如果提示密码强度不够,执行以下两句  
      # set global validate_password_policy=0;
      # set global validate_password_length=1;         
      # 刷新数据库
      flush privileges;
      
    • 修改配置文件,然后重新启动
      文件路径 /etc/mysql/mysql.conf.d/mysqld.cnf
      修改如下(127.0.0.1回环网络只允许本机登陆,其它主机登陆不了)

      # bind-address		= 127.0.0.1
      bind-address		= 0.0.0.0
      
    • 防火墙相关

      # 开防火墙
      service firewalld start    
      # 重启
      service firewalld restart      
      # 添加端口 协议
      firewall-cmd --permanent --add-port=3306/tcp  
      firewall-cmd --reload    
      # 光防火墙
      service firewalld stop
      # 或者  
      sudo systemctl disable firewalld
      
  • 查看是否是以0.0.0.0(不是127.0.0.1)监听

    sudo netstat -npl|grep 3306
    # 显示
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      8048/mysqld         
    
  • 卸载(卸载前停mysql 确保文件备份)

    # 停止服务  
    sudo systemctl stop mysql.service && sudo systemctl disable mysql.service
    # 卸载
    sudo apt purge mysql*       
    # 清理依赖  
    sudo apt autoremove
    sudo apt autoclean
    sudo rm -rf /etc/mysql/ /var/lib/mysql
    

安装8.0以上的高版本,采用官方源

  • 到官网复制下源
    MySQL :: Download MySQL APT Repository

    linux_mysql下载源位置.png

  • 下载该deb 并更新到仓库,然后安装

    apt-get install curl  
    # 不要加 sudo
    curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.19-1_all.deb  
    # 解压该源  
    sudo dpkg -i mysql-apt-config*  
    # 更新到仓库
    sudo apt update  
    # 像上面一样安装  
    sudo apt install mysql-server -y
    

Centos上安装Mysql 8.0

  • 参考,很靠谱,力荐:Linux (centos8)安装 MySQL 8 数据库(图文详细教程) - 云+社区 - 腾讯云 (tencent.com)
    另一个不知可靠度:(29条消息) CentOs7安装mysql-server和libmysqlclient-dev_Borange54的博客-CSDN博客_libmysqlclient-dev yum

  • 下载并安装 MySQL 官方的 Yum Repository

    wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
    
  • 安装rpm

    rpm -ivh mysql80-community-release-el7-1.noarch.rpm
    
  • 安装服务

    yum install mysql-server
    
  • 启动服务

    systemctl start mysqld.service 
    
  • 查看运行状态,及监听地址(0.0.0.0才正确),见上面

  • 查看原始密码,如果提示密码为empty,则就是空的原始密码

    grep "password" /var/log/mysqld/mysqld.log
    
  • 登录mysql,并设置密码

    mysql -uroot -p  
    use mysql;  
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
    
  • 设置远程连接(见上面mysql 8.0的设置),开放端口(只演示防火墙的设置)

    firewall-cmd --permanent --zone=public --add-port=3306/tcp  
    # 刷新防火墙设置   
    firewall-cmd --reload
    
  • 设置不区分大小写(没验证过), 在[mysqld]下,添加以下内容

    vim /etc/my.cnf     
    # 让MYSQL大小写敏感(1-不敏感,0-敏感)
    lower_case_table_names=1
    

MySQL作为客户端开发

(29条消息) Linux(程序设计):18---libmysqlclient-dev库(C语言操作MySQL)_董哥的黑板报-CSDN博客_libmysqlclient-dev