一、Ubuntu安装
Ubuntu安装可以直接使用apt工具
sudo apt-get install mysql-server //服务端
sudo apt-get install mysql-client //客户端
sudo apt-get install libmysqlclient-dev //程序编译时链接的库
在安装完成后,mysql服务器会自动运行,可以运行下行命令查看mysql的运行状态。
sudo systemctl status mysql
在安装成功后,默认会有三个账户,其中一个是root用户。root用户的密码认证协议是auth_socket,默认密码是随机的,所以不能通过root的密码登录mysql。
其他两个账户和密码则可以在/etc/mysql/debian.cnf文件中找到。
因此,初始时,我们只能通过debian.cnf文件中的账户信息登录mysql,当然,你也可以使用 “ sudo mysql ”命令来通过root用户登录mysql。
使用mysql的初始化工具,
sudo mysql_secure_installation
初次运行会要求你设置VALIDATE PASSWORD PLUGIN
,它被用来测试 MySQL 用户密码的强度,并且提高安全性:
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
如果你选中了Yes,则会提供三个级别的密码验证策略:
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
输入选择的策略即可。
接着会让你设置root的密码(尽管这儿设置的并没有什么用,因为上文提到的auth_socket),如果你设置了验证密码插件,这个脚本将会显示你的新密码强度。下一步,你将被要求移除任何匿名用户,限制 root 用户只能本地机器访问,移除测试数据库并且重新加载权限表。你应该对所有的问题回答y
。
如果后续你需要自定义密码认证策略,你可以登录mysql后使用
show variables like 'validate_password%';
查看密码认证策略
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
可以使用类似
set global validate_password.policy=0;
来全局设置密码认证策略。
1.1 修改root用户的密码认证方式
在登录mysql后,我们可以使用如下语句来设定root的新密码。
use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by '新密码';
mysql_native_password是使用这种密码加密策略。因为mysql8.0.11之后默认的密码加密策略变为了caching_sha2_password,但是还是有很多不支持这种新的策略。
可以在mysql.user中查看用户信息。一些常用的信息如Host(访问地址)、User(用户名)、authentication_string(登录密码)、plugin(密码加密策略)。
1.2 远程访问用户
root用户的Host是localhost,即只能本地访问,如果你需要远程访问数据库,则你需要一个可以远程访问的用户。一般情况下,你可以选中创建新的用户,并给予它你所需要的权限。
create user 'admin'@'%' identified with mysql_native_password by 'admin';
grant all privileges on *.* to 'admin'@'%';
flush privileges;
第一句是创建admin用户,%表示访问地址任意。第二句则是赋予权限语句,*.*表示所有数据库的所有表,同时,这儿我选择了赋予全部权限,实际可以赋予指定需要的权限。第三句是刷新权限表,这样子才能生效。
如果不执行第三句,你也可以通过重启mysql实现权限表的重新加载。
1.3 数据库设置
在/etc/mysql/mysql.conf.d文件夹内有mysqld.cnf配置文件,该文件设置了数据库访问端口和允许访问的ip地址,bind-address=127.0.0.1,即只允许本地访问。如果要远程访问可以将此修改为指定的IP地址或通配符(0.0.0.0)。
该文件只会在在启动时配置,所以,修改后需要重启mysql。
service mysql restart
二、Windows下客户端安装
mysql提供了一个客户端工具workbench。官方下载地址:https://dev.mysql.com/downloads/workbench/
新建一个MySQL Connections
我们可以通过这个客户端远程访问数据库服务器。