Ubuntu安装并连接MySQL踩过的坑
本人的Ubuntu是用的Windows10下的Linux子系统,为了方便本地开发使用,个人觉得本地开发轻量级的用起来很舒服。所以MySQL数据库也就安装在Linux子系统上了,当然免不了会入坑。为了后学者少入坑,总结了下我的入坑及出坑历程。
1.Win10上安装Linux Ubuntu子系统
请参考我的另一篇博文:Windows上安装Ubuntu
2.Ubuntu上安装MySQL
2.1 卸载安装失败的MySQL数据库
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove remove mysql-common
// 清理MySQL
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
2.2 安装MySQL
// 这一步没有提示输入用户名和没密码,小坑在这就埋下了,记得之前有可以输入用户名和密码的安装包的但是给忘了?
sudo apt-get install mysql-server
sudo apt-get intsall mysql-client
sudo apt-get install libmysqlclient-dev
// 查看服务是否安装了,Shell遵循无提示即无错误
sudo netstat -tap | grep mysql
2.3 修改配置文件
sudo vi /etc/mysql/mysql/mysql.conf.d
将bind-address=127.0.0.1 修改为 bind-address = 0.0.0.0【主要多人操作时的限制】
//启动服务:
sudo /etc/init.d/mysql start
//重启服务
sudo /etc/init.d/mysql restart
2.4 命令交互式操作数据库
// 一定得加sudo,不然在登录的时候会提示没有权限
$ sudo mysql -u root -p
Enter password:
// 然后直接就按Enter键就行了,因为在安装mysql-server的时候没有设置用户名和密码;虽然也可以操作数据库但是操作起来非常的不方便。
// 如果要在数据库工具如Navicate去连接的话就尴尬了会报错,以下是报错内容
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
// 那么问题来了,该怎么解决呢?
2.5 修改数据库配置用工具连接
// 登录数据库
$ sudo mysql -u root -p
mysql> USE mysql;
mysql> SELECT user, plugin FROM mysql.user;
-- 查询结果
+------------------+-----------------------+
| user | plugin |
+------------------+-----------------------+
| root | mauth_socket |
| mysql.session | mysql_native_password |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
| root | mysql_native_password |
+------------------+-----------------------+
5 rows in set (0.00 sec)
-- 结果发现root的plugin='auth_socket'并不是本地密码,因此需要修改它
-- 修改root账户的密码和plugin的本地密码验证方式
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('123'), plugin='mysql_native_password' WHERE user='root';
-- 刷新
mysql> FLUSH PRIVILEGES;
-- 退出
mysql> exit;
-- 用再次登录的时候就输入用户名密码就可以登录成功了
2.6 注意:高版本的MySQL存在简单密码无法设置成功的安全限制,但是可以修改限制
mysql> SET GLOBAL validate_password_policy=0;
mysql> SET GLOBAL validate_password_mixed_case_count=0;
mysql> SET GLOBAL validate_password_number_count=3;
mysql> SET GLOBAL validate_password_special_char_count=0;
mysql> SET GLOBAL validate_password_length=3;
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('123'), plugin='mysql_native_password' WHERE user='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
-- 然后再登录即可。
踩过的坑,希望你们不要再踩了!文章中的一些方法集百家之长和自己的一些实际操作,文章中可能存在的一些疏忽,欢迎指正留言,谢谢!