方法一: 下载安装MySQL(安装其他版本)
在Ubuntu中,默认情况下,只有最新版本的MySQL包含在APT软件包存储库中,要安装它,只需更新服务器上的包索引并安装默认包apt-get。
如果因为程序兼容性问题,要安装5.7版本,则可以同过下载安装。
1.1在官网下载mysql安装包
https://downloads.mysql.com/archives/community/
1.2解压文件
进入你的下载文件夹下面
tar -xvf mysql-server_5.7.13-1ubuntu16.04_i386.deb-bundle.tar
解压了这个包之后会在文件夹看到多个deb文件
1.3安装
安装顺序(很重要的,因为存在依赖关系):
libmysqlclient20_5.7.13-1ubuntu16.04_i386.deb
libmysqlclient-dev_5.7.13-1ubuntu16.04_i386.deb
libmysqld-dev_5.7.13-1ubuntu16.04_i386.deb
mysql-common_5.7.13-1ubuntu16.04_i386.deb
mysql-community-source_5.7.13-1ubuntu16.04_i386.deb
mysql-community-client_5.7.13-1ubuntu16.04_i386.deb
mysql-community-server_5.7.13-1ubuntu16.04_i386.deb
mysql-server_5.7.13-1ubuntu16.04_i386.deb
可以一次性按顺序输入安装包名字:
sudo dpkg -i libmysqlclient20_5.7.13-1ubuntu16.04_i386.deb libmysqlclient-dev_5.7.13-1ubuntu16.04_i386.deb libmysqld-dev_5.7.13-1ubuntu16.04_i386.deb mysql-common_5.7.13-1ubuntu16.04_i386.deb mysql-community-source_5.7.13-1ubuntu16.04_i386.deb mysql-community-client_5.7.13-1ubuntu16.04_i386.deb mysql-community-server_5.7.13-1ubuntu16.04_i386.deb mysql-server_5.7.13-1ubuntu16.04_i386.deb
也可以一个一个来安装(这样子能够搞懂依赖的关系)
安装过程中可能缺少依赖,所以可以用:
sudo apt-get install [文件名]
eg:这里面的问题是缺少libaio1和libmecab2,所以可以用:
sudo apt-get install libaio1 libmecab2
如果还是不能安装使用:
sudo apt-get -f install
安装完成之后:
查看mysql服务状态:
service mysql start
进入MySQL
mysql -u root -p
2、方法二:通过apt 安装MySQL服务(推荐,会安装最新版)
#命令1 更新源
sudo apt-get update
#命令2 安装mysql服务
sudo apt-get install mysql-server
2.1 初始化配置
sudo mysql_secure_installation
#输入sudo mysql_secure_installation 设置密码报
Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication me 的解决方法:
1. 打开终端
2.在另一个终端,杀掉 mysql_secure_installation 的进程
sudo killall -9 mysql_secure_installation
3. 进入mysql
sudo mysql
4.输入sql改掉加密规则
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SetRootPasswordHere';
5.然后退出
6.重新初始化mysql
sudo mysql_secure_installation
7.输入更改加密规则时sql上的密码SetRootPasswordHere
配置项较多,如下所示:
#1
VALIDATE PASSWORD PLUGIN can be used to test passwords...
Press y|Y for Yes, any other key for No: N (选择N ,不会进行密码的强校验)
#2
Please set the password for root here...
New password: (输入密码)
Re-enter new password: (重复输入)
#3
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 (选择N,不删除匿名用户)
#4
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) : N (选择N,允许root远程连接)
#5
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 (选择N,不删除test数据库)
#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 (选择Y,修改权限立即生效)
2.2检查mysql服务状态
systemctl status mysql.service
3.1配置远程访问
在Ubuntu下MySQL缺省是只允许本地访问的,使用workbench连接工具是连不上的;
如果你要其他机器也能够访问的话,需要进行配置;
找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf #找到 bind-address 修改值为 0.0.0.0(如果需要远程访问)
sudo /etc/init.d/mysql restart #重启mysql
sudo mysql -uroot -p
输入用户密码
#切换数据库
mysql>use mysql;
#查询用户表命令:
mysql>select User,authentication_string,Host from user;
#查看状态
select host,user,plugin from user;
#设置权限与密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; #使用mysql_native_password修改加密规则
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '密码' PASSWORD EXPIRE NEVER; #更新一下用户的密码
mysql> UPDATE user SET host = '%' WHERE user = 'root'; #允许远程访问
#刷新cache中配置 刷新权限
mysql>flush privileges;
mysql>quit;
如果无法更改密码使用flush privileges;然后再进行更改密码,修改加密规则操作。
其中root@localhost,localhost就是本地访问,配置成 % 就是所有主机都可连接;
第二个’密码’为你给新增权限用户设置的密码,%代表所有主机,也可以是具体的ip;
注意不要直接更新密码的编码格式,而不加密码,这样会把加密密码跟新了,需要携带密码
FLUSH PRIVILEGES;作用是:
将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。
MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。
通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。
而不必冒太大风险。
修改密码
alter user 'root'@'%' identified with mysql_native_password by '密码';
新增用户赋权并设置远程访问
mysql8和原来的版本有点不一样,8的安全级别更高,所以在创建远程连接用户的时候,
不能用原来的命令(同时创建用户和赋权):
#必须先创建用户(密码规则:mysql8.0以上密码策略限制必须要大小写加数字特殊符号)
mysql> CREATE USER 'sammy'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
#赋权
mysql> GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'%' WITH GRANT OPTION;
修改加密方式:
mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式Navicat 12以下客户端不支持;
Navicat 12以下客户端支持的是mysql_native_password这种加密方式;
update user set plugin='mysql_native_password' where user='root'
如果为了安全性,设置了用户验证,必须使用sudo,才能登录,出现如下情况:(尽量不要设置ubuntu用户在验证,否则会很麻烦)
解决方法:
sudo vim /etc/mysql/my.cnf
添加:
[mysqld]
skip-grant-tables
保存后重启mysql,可以正常登陆了
这样操作后,是相当于跳过了mysql的密码认证。很不安全,直接就可以登录进去。
安装MySQL 图形化工具workbench
输入
sudo snap install mysql-workbench-community
在创建链接时输入密码报下面的错误
Could not store password:store password An AppArmor policy
prevents this sender from sending this message to this recipient;
ench
shot:
type="method_call",sender=":1.220"(uid=1000 pid=14164 comm="/-
ted later ifit's not set.
snap/mysql-workbench-community/9/usr/bin/mysql-wo"
x,OSX
label="snap.mysql-workbench-community.mysql-workbench-
community(enforce)")interface="org.freedesktop.Secret.Service"
a.Leave blank to selectit later.
member="Searchltems"error name="(unset)"requested reply="0"
to design,
destination=":1.16"(uid=1000 pid=1604 comm="/usr/bin/gnome-
s well as
keyring-daemon-daemonize-login "label="unconfined") 的解决方法:
在终端输入:
sudo snap connect mysql-workbench-community:password-manager-service :password-manager-service