--- title: Ubuntu 安装MySQL(MariaDB)过程 date: 2020-07-22 22:54:29 tags: - Linux - Ubuntu - MySQL - MariaDB - 数据库 categories: - MariaDB --- > 本文内容简单,只是整理了一下常规操作而已。 > MariaDB 是 MySQL 的一个分支主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 > > MariaDB 的目的是完全兼容 MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。 > 一般情况下我在个人的学习和开发中都会使用 MariaDB 来代替 MySQL,就像我会使用 Open JDK 来代替 Oracle JDK 一样。 ## 1. 安装 在 Ubuntu 上安装 MySQL: ``` sudo apt-get install mysql-client mysql-server ``` 安装 MariaDB 的话,把 "mysql" 改成 "mariadb" 即可: ``` sudo apt-get install mariadb-client mariadb-server ``` 一般来说安装完成之后都是自动运行的,如果没有运行,可以执行 `sudo service mysql start` 启动它(MySQL 和 MariaDB 都一样)。 > 关闭服务:`sudo service mysql stop` > 查看服务状态:`sudo service mysql status` > 我在阿里云的 Ubuntu 20.04 上安装 MySQL,版本输出信息为: > Server version: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) > > 在本地机的 Ubuntu 18.04.4 MariaDB,版本输出信息为: > Server version: 10.1.44-MariaDB-0ubuntu0.18.04.1 18.04 ## 2. 初始化 ``` mysqld -initialize ``` 耐心等待命令执行完成。 ## 3. 设置 ### 3.1 登录数据库 切换系统 root 用户,输入 ``` mysql -u root -p ``` 不用输入密码,直接回车,登录 MariaDB(或者 MySQL)。 ### 3.2 修改密码 ``` set password for root@localhost = password('123'); ``` > 否则默认密码为空。 ### 3.3 修改 `plugin` 属性为 `mysql_native_password` ```sql use mysql; update user set plugin='mysql_native_password' where user='root'; ``` 然后输入 `flush privileges;` 使之生效。 > 否则系统的其他用户无法登录数据库的 root 用户。 > ERROR 1698 (28000): Access denied for user 'root'@'localhost' ### 3.4 将 `host` 属性设置为 `%` ```sql use mysql; update user set host = '%' where user = 'root'; ``` 然后输入 `flush privileges;` 使之生效。 > 否则其它设备上的客户端(DataGrid、Netcat 以及我们自己编写的程序等)无法登录数据库的 root 用户。 ## 4. 注意!!! 上面的 3.3、3.4 针对的是我学习生活中需要在其他设备、其他系统用户上登录数据库的 root 用户。实际上,为了安全,我们可能不会允许这么做。 例如我们可能保留 root 用户的 plugin 属性为 unix_socket,系统的普通用户也只能登录数据库的其他用户,只有系统的 root 用户才能登录数据库的 root 用户。 我们还可能保留 root 用户的 host 属性为 localhost,或者只允许在指定的主机上登录 root,还可以添加另一个数据库用户(设置好适合的权限),用来在其他设备上登录并操作数据库。