【究极详细版】Ubuntu安装配置MySQL | 您所在的位置:网站首页 › 如何配置mysql的连接数据源 › 【究极详细版】Ubuntu安装配置MySQL |
安装
通过包管理工具apt安装,在ubuntu20.04下mysql版本默认为8.0,而ubuntu18.04在截至本文完成时默认版本为5.7。如果想在20.04下安装5.7版本,可以看这篇连接。 首先,更新软件包列表索引: sudo apt update安装MySQL: sudo apt install mysql-server查看MySQL版本: mysql --version由于本地系统为ubuntu20.04,MySql版本号为8.0。 查看服务状态, service mysql status状态正常,到此安装完毕! 配置此时,mysql客户端已经作为服务器的依赖安装到本地,故可以通过命令行登录服务器。mysql8.0,root 用户默认通过 auth_socket 插件授权,而 auth_socket 插件通过 Unix socket 文件来验证所有连接到 localhost 的用户。这意味着你不能以用户–密码的方式,登录root账户。通过指令以root身份登录: sudo mysql但是,通过第三方程序是无法连接到数据库的,例如JDBC、pymysql等。可以通过修改mysql下的user表,配置密码方式以root身份登录: use mysql; select user, host, plugin from user;将root对应的plugin由 auth_socket 改为 mysql_native_password 即使是mysql8.0也是,否则影响后续远程连接: #MySQL8.0必须先执行此步骤设置密码,MySQL5.7可以选择先安装下面的secure!!! alter user 'root'@'localhost' identified with mysql_native_password by '密码'; flush privileges; exit;至此,可以不用输入sudo,通过密码的方式登录数据库: mysql -uroot -p 增强数据库服务的安全性执行: sudo mysql_secure_installation键入Enter后继续, 设置root用户密码,并反馈当前密码强度,询问是否确认密码: 询问三个问题,并根据提供的答案来设置系统的安全性。 是否关删除匿名测试用户的信息。是否禁止远程root登录。只允许本地登录root用户,并拒绝远程连接。是否删除 test 数据库。根据自身需求键入相应的y or n。 最后输入 y ,重新加载特权表使上述配置生效。返回 All Done!,设置成功。 远程连接如何连接ubuntu服务器下的mysql数据库? 修改配置文件: #MySQL8.0!!! sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf #MySQL5.7!!! sudo vim /etc/my.cnf注释下图标记行,解除地址绑定: 重启mysql服务: sudo service mysql restart登录mysql后执行: use mysql; update user set host='%' where user='root'; flush privileges; #MySQL8.0执行这行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; #MySQL5.7执行这行 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; flush privileges; 卸载 sudo apt purge mysql-* # mysql后用tab补全,把所有与mysql相关的卸载 sudo rm -rf /etc/mysql/ /var/lib/mysql sudo apt autoremove sudo apt autoclean 忘记密码(ERROR 1045)修改配置文件,在[mysqld]后添加 skip-grant-tables (登录时跳过权限检查): #MySQL8.0!!! sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf #MySQL5.7!!! sudo vim /etc/my.cnf重启服务后可以无密码登录mysql: sudo service mysql restart mysql mysql8.0 use mysql; #必须先将authentication_string置为空! update user set authentication_string='' where user='root'; flush privileges; #设置新密码 ALTER user 'root'@'%' IDENTIFIED BY '新密码'; mysql5.7 use mysql; update user set authentication_string = password('新密码') where user = 'root';最后记得删除配置文件中的 skip-grant-tables 并重启服务,否则会影响远程连接! ERROR 1819 (HY000): Your password does not satisfy the current policy requirements查看密码策略: SHOW VARIABLES LIKE 'validate_password%';参照上图变量名修改策略: set global validate_password.policy=0 set global validate_password.length=1;最后修改密码: alter user 'root'@'%' identified by 'root';登录成功: |
CopyRight 2018-2019 实验室设备网 版权所有 |