Ubuntu 18.04 安装 MariaDB

作者: zeamonk | 来源:发表于2019-01-06 01:38 被阅读1次

Ubuntu 安装 MariaDB

0x00 为什么选择MariaDB

MySQL 被 Oracle 收购后,存在闭源的风险,因此开源社区 fork 了MySQL独立开发来规避这个风险。MariaDB 无论是 API 还是命令行,都与 MySQL 完全兼容。作为坚定的开源主义者,选择 MariaDB 是信仰问题_

0x01 两种安装方式

MariaDB 的安装非常简单,通常有两种安装方式。

  • 直接从 Ubuntu 官方仓库安装

    MariaDB 安装包可以在 Ubuntu 的官方仓库中找到,所以,最简单粗暴的安装方式就是直接 apt 从官方仓库安装了,命令如下:

    sudo apt-get install mariadb-server
    
  • 从 MariaDB 仓库中安装

    这种方式略微复杂一点,步骤如下:

    1. 导入 GPG 秘钥

      sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
      
    2. 添加 MariaDB 仓库

      sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.3/ubuntu bionic main'
      
    3. 更新仓库

      sudo apt-get update
      
    4. 安装 MariaDB

      sudo apt-get install mariadb-server
      

当然,你也可以选择自己编译安装……

安装完成后,mariadb 服务会自动启动,可以通过下面的命令检查服务状态:

sudo systemctl status mariadb

如果一切正常,应该像下面这样:

maraidb01.png

0x02 基本配置

安装完成后,与 MySQL 类似,可以进行一些基本的配置,执行下列命令:

sudo mysql_secure_installation

大致会让你设置密码、移除匿名用户、是否允许 root 用户远程登录、删除测试数据库等选项,根据提示进行操作就可以了。

之后,通过mysql -u USER_NAME -p,然后根据提示输入密码就可以登录数据库了。

0x03 常见问题

虽然安装比较简单,但是实际使用中随便一个坑就得折腾半天,下面记录下自己踩过的坑。

  1. MariaDB 启动超时,报错信息如下图
mariadb2.png

重点是第四行 Active:failed (Result: timepout),这个锅需要 AppAromr 来背,详细分析可见 AppArmor and MySQL,在这里,我们只说解决方式。

依次执行如下命令:

sudo apt-get install apparmor-utils
sudo aa-complain /usr/sbin/mysqld
sudo systemctl reload apparmor
sudo systemctl restart mariadb

如果出现下列问题:

$ sudo aa-complain /usr/sbin/mysqld
Setting /usr/sbin/mysqld to complain mode.

ERROR: /etc/apparmor.d/usr.sbin.mysqld contains no profile

可以尝试如下命令

sudo aa-disable /usr/sbin/mysqldsudo aa-disable /usr/sbin/mysqld

然后重新载入 apparmor。

  1. 登陆时出现ERROR 1698 (28000): Access denied for user 'root'@'localhost'

    MariaDB 好像默认启用了 UNIX auth_socket plugin,这就导致一个问题,登录时数据库用户使用系统用户认证体系来认证。这种情况下,如果使用mysql -u root 的话,就会出现上面的错误信息。

    要解决这个问题,主要有两种思路:

    • 创建与系统用户同名的数据库用户

      # 登录数据库
      $sudo mysql -u root
      
      # 选择 mysql 数据库
      MariaDB [(none)]>  USE mysql
      
      # 创建同名数据库用户
      MariaDB [mysql]> CREATE USER 'zeamonk'@'localhost' IDENTIFIED BY '';
      MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'zeamonk'@'localhost';
      MariaDB [mysql]> UPDATE user SET plugin='unix_socket' WHERE User='zeamonk';
      MariaDB [mysql]> FLUSH PRIVILEGES;
      MariaDB [mysql]> exit;
      
      # 重启数据库
      sudo systemctl restart mariadb
      
    • 更改 root 用户认证方式

      默认认证方式:

      MariaDB [mysql]> SELECT User, Host, plugin FROM mysql.user;
      +------+-----------+-------------+
      | User | Host      | plugin      |
      +------+-----------+-------------+
      | root | localhost | unix_socket |
      +------+-----------+-------------+
      

      具体操作如下:

      # 登录数据库
      $sudo mysql -u root
      
      # 选择 mysql 数据库
      MariaDB [(none)]>  USE mysql
      
      # 更改认证方式
      mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
      mysql> FLUSH PRIVILEGES;
      mysql> exit;
      
      # 重启数据库
      sudo systemctl restart mariadb
      

注意: 有的系统中 unix_socket 可能叫 auth_socket, 使用时需要结合系统实际进行修改。

欢迎关注公众号:


qrcode.jpg

相关文章

网友评论

    本文标题:Ubuntu 18.04 安装 MariaDB

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