Ubuntu 18.04+ apt install 安装 Mysql 时间: 2019-09-17 18:52 分类: mysql,数据库 老套路,安装命令如下: ``` $ sudo apt update $ sudo apt install mysql-server $ sudo mysql_secure_installation ``` 注意第三条安装命令`sudo mysql_secure_installation`,这条命令是用来安装`Mysql`的一个安全脚本工具。 在`Ubuntu 18.04`中以上命令运行完,可以发现,并没有像`Ubuntu 14.04`那样让我们在安装的时候输入`Mysql`的密码,所以此时的`Mysql`是没有密码的。 此时,我们运行如下脚本: ``` $ sudo mysql_secure_installation ``` 运行时会出现一系列的提示,比如设置是否允许远程连接(貌似无效,还是要手动修改配置)、是否删除`test`库、设置`root`用户密码(设置后依旧无法直接登录,还需要进一步修改,后面介绍)、设置用户密码强度等。 之所以前面设置密码无效,是因为在`Ubuntu 18.04`中,`MySQL 5.7`及以上版本默认是用`auth_socket`插件验证的而不是密码验证,所以我们需要修改验证方法为`mysql_native_password`。 首先,执行如下命令: ``` $ mysql ``` 查看用户的验证方法: ``` mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; ``` 比如下面这样: ``` +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec) ``` 可以看到`root`用户的验证方式为`auth_socket`,`authentication_string`为空。 继续运行如下命令改变验证方法及登录密码(注意:此命令会改变之前运行脚本时设置的密码): ``` mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; ``` 继续执行: ``` mysql> FLUSH PRIVILEGES; ``` 使以上修改生效。 检查修改是否生效: ``` mysql> SELECT user,authentication_string,plugin,host FROM mysql.user; ``` 输出结果: ``` +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec) ``` 可以看到`root`用户已经改为`mysql_native_password`验证。 标签: 无