文章有点长,那是因为遇到的问题多。
一、安装mysql:
输入命令:sudo apt-get update
输入命令:sudo apt-get install mysql-server
二、初始化配置:
输入命令:sudo mysql_secure_installation
下面是执行命令后的内容:
#1
好像是下载一个东西用于密码测试吧
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (我的选项)
#2
root账户设置密码
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)
#3
默认情况下,MySQL安装有一个匿名用户。
允许任何人登录MySQL,而不需要为他们创建一个用户帐户。
要删除匿名账号吗
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them...
Remove anonymous users? (Press y|Y for Yes, any other key for No) : N (我的选项)
#4
通常情况下,只允许root从'localhost'连接。
这可以确保有人无法从网络上猜出根密码。
不允许远程登录根目录root
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network...
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y (我的选项)
#5
默认情况下,MySQL有一个名为 "test "的数据库,任何人都可以访问。
删除测试数据库和对它的访问
By default, MySQL comes with a database named 'test' that
anyone can access...
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : N (我的选项)
#6
重新加载权限表将确保到目前为止所有的改变
将立即生效。
现在重新加载权限表吗
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (我的选项)
三、检查mysql服务状态
输入命令:systemctl status mysql.service
出现下面结果就选正常:
四、远程访问
很多人都是这里出问题了:1、开放权限。2、创建新用户。3、修改配置文件
用根用户进入mysql:sudo mysql -uroot -p
1、让所有的主机都能连接本地的mysql,root好像不能被访问到,所以下面2中创建新用户。
输入命令:GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "123456";
2、用root用户创建新的数据库和用户:
创建数据库
输入命令:create database dog;
创建用户cx,密码87654321,并允许cx用户可以从任意机器上登入mysql
输入命令:GRANT ALL PRIVILEGES ON dog.* TO cx@"%" IDENTIFIED BY "87654321";
这里会出错:Your password does not satisfy the current policy requirements
linux对于密码
设置每次登录之后都要重新配置,总之只要报错就得重新配,我配了四遍,应该是配置
好后不要急着重启数据库吧,要不白配置了)
set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;
SHOW VARIABLES LIKE 'validate_password%';
输入命令:SHOW VARIABLES LIKE 'validate_password%';
就会出现:
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 3 |
| validate_password_mixed_case_count | 0 |
| validate_password_number_count | 3 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 0 |
+--------------------------------------+--------+
检查用户名字
插件用于验证密码强度的字典文件路径
密码最小长度,参数默认为8,
密码至少要包含的小写字母个数和大写字母个数
密码至少要包含的数字个数。
密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。
密码至少要包含的特殊字符数。
在执行:GRANT ALL PRIVILEGES ON dog.* TO cx@"%" IDENTIFIED BY "87654321";
最后改一下mysql配置文件:
3、exit退出mysql系统
输入命令:vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到bind-address的值修改为0.0.0.0
五、连接navicat
这个应该是mysql重启造成的,密码的配置又复原了,重新配置一下cx账户下的密码试试:
果然是这样:只要退出mysql密码就失效了,所以配置好之后赶紧连接。
这应该就不会出错了。