MySQL是一个开源的数据库管理系统,一般作为最受欢迎的LAMP(Linux,Apacheubuntu查看mysql数据库,MySQL,PHP/Python/Perl)的一部份进行安装,其通过关系型数据库和SQL来管理数据。
MySQL的安装比较简单,只须要简单的几步就可以搞定,但它的一些配置却比较冗长。下边以Ubuntu18.04(其他版本类似)为例,详尽介绍MySQL数据库的安装和配置。
安装MySQL
在Ubuntu中,默认只有最新版本的MySQL包含在APT软件包储存库中。
要安装它,须要使用apt更新服务器上的软件包索引:
$ sudo apt update
之后安装默认的MySQL软件包:
$ sudo apt install mysql-server
这一步不会进行一些配置相关的提示(比如:设置密码),由于会使MySQL的安装不安全,我们将在下一步解决该问题。
配置MySQL
在安装完MySQL以后,应当运行一下包含的安全脚本:
$ sudo mysql_secure_installation
这将会通过一系列的提示,帮助我们做一些常规化的安全设置:
重点说一下第一个提示,这会寻问我们是否乐意设置验证密码插件,该插件可用于测试MySQL密码的硬度。
修改用户认证方法
其实里面设置了root用户的密码,但当通过MySQL终端登陆时,并不能通过密码进行认证:
$ mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
这是由于在MySQL5.7及以后的版本中,root用户被默认设置为通过auth_socket插件(而非密码)认证,其主要诱因是出于对数据库的安全性考虑。
话虽这么,但时常也须要外部程序来访问,这时都会很麻烦了。为了使root用户能通过密码方法联接MySQL,先通过终端打开MySQL的提示符:
$ sudo mysql
之后通过如下命令,检测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 | *ABA968D18E3A0B6DEB02F9D5FBDA21415A86977B | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
显而易见,root用户的认证形式是auth_socket。如今运行如下命令,将认证方法修改为密码认证(即:mysql_native_password):
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
注意:勿必设置一个高硬度的密码(这儿的“123456”仅仅是为了测试),该操作将会改变步骤2中设置的密码。
完成以后ubuntu查看mysql数据库,再来查看一下root用户的认证形式:
mysql> SELECT user, authentication_string, plugin, host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *ABA968D18E3A0B6DEB02F9D5FBDA21415A86977B | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
可以看见,早已更改成功了,如今退出数据库:
mysql> exit
再来尝试一下,让root用户以密码方式登陆:
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 7
Server version: 5.7.29-0ubuntu0.18.04.1 (Ubuntu)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql>
可以正常联接了,哈哈O(∩_∩)O!
配置远程访问
默认情况下红旗linux系统,MySQL只窃听本地主机(localhost)的联接。若要启用远程联接,须要进行以下配置。
1.编辑MySQL的f配置文件:
$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉下边这行配置:
bind-address = 127.0.0.1
完成以后linux查看硬件信息,保存退出!
2.修改user表中的host项,将“localhost”改称“%”(表示所有用户都可以访问),并给root用户授权:
$ mysql -u root -p
mysql> use mysql;
mysql>
mysql> update user set host = '%' where user = 'root';
mysql>
mysql> grant all on *.* to root@'%' identified by '123456' with grant option;
mysql>
mysql> flush privileges; # 刷新权限
mysql>
mysql> exit
3.执行如下命令,重启mysql服务:
$ sudo systemctl restart mysql
如今,就可以远程联接(右图为Navicat截图)MySQl数据库了:
OK,到这儿,MySQL的安装就即将完成了!
·END·
高效程序员
谈天·说地·侃代码·开车