先给出卸载的方法,方便童鞋安装失败的时候可以彻底删除mysql
彻底删除mysql完整步骤:
1、 sudo apt-get remove mysql-server.
2、sudo apt-get autoremove mysql-server
3、sudo apt-get remove mysql-common
4、sudo rm /var/lib/mysql/ -R # 删除数据库目录
sudo rm /etc/mysql/ -R #删除启动脚本、配置文件等
sudo apt-get autoremove mysql* --purge # 卸载mysql所有文件
sudo apt-get remove apparmor # 这个apparmor是在装mysql-server时装上的,和安全有关
检查是否卸载干净
dpkg -l | grep mysql # 若没有返回,说明已完成卸载
如果有返回 则执行下面的命名
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P # 清理残余mysql文件
接下来就开始安装前的准备
去官网下载mysql最新版是5.7.22,下面是传送门
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
下载之后移动到想要放置的位置解压,我这里是移动到了/mnt/mysql5.7/下面
然后用tar -xf mysql-server_5.7.22-1ubuntu14.04_amd64.deb-bundle.tar解压:
安装前准备工作:更新依赖源及安装libaio1依赖
sudo apt-get update
sudo apt-get upgrade
apt-get install libaio1
开始安装:
安装顺序如下:
1.mysql-common_5.7.22-1ubuntu14.04_amd64.deb
2.libmysqlclient20_5.7.22-1ubuntu14.04_amd64.deb
3.libmysqlclient-dev_5.7.22-1ubuntu14.04_amd64.deb
4.libmysqld-dev_5.7.22-1ubuntu14.04_amd64.deb
5.mysql-community-client_5.7.22-1ubuntu14.04_amd64.deb
6.mysql-client_5.7.22-1ubuntu14.04_amd64.deb
7.mysql-community-server_5.7.22-1ubuntu14.04_amd64.deb
一、安装命令
dpkg -i mysql-common_5.7.22-1ubuntu14.04_amd64.deb libmysqlclient20_5.7.22-1ubuntu14.04_amd64.deb libmysqlclient-dev_5.7.22-1ubuntu14.04_amd64.deb libmysqld-dev_5.7.22-1ubuntu14.04_amd64.deb mysql-community-client_5.7.22-1ubuntu14.04_amd64.deb mysql-client_5.7.22-1ubuntu14.04_amd64.deb mysql-community-server_5.7.22-1ubuntu14.04_amd64.deb
二 输入root密码,OK(忘记截图了)
三、查看是否安装成功,命令
service mysql start
四、进入mysql,命令
mysql -u root –p
到这里mysql是安装成功了
Mysql5.7.22的配置文件放的与其他版本有一些不同,在终端输入vi /etc/mysql/my.cnf,发现该文件引用了其他的俩个文件,下面的配置写在这个文件里面也可以生效,不过我还是分别配置在了对应的文件中,毕竟目录这么放也是有它的原因滴
但是默认的数据库文件是在/var/lib/mysql/下面,如果以后数据库数据量增大,就会报磁盘不足的问题,那接下来就开始修改数据库文件存放的默认路径:
service mysql stop #迁移前必须停止mysql
创建mysql 存放的目标文件夹 mkdir /mnt/mysql/data
修改所属用户和用户组 chown -R mysql:mysql /mnt/mysql/data
修改权限 sudo chmod -R 700 /mnt/mysql/data
迁移文件 cp -a /var/lib/mysql/* /mnt/mysql/data/
修改配置文件 vi /etc/mysql/mysql.conf.d/mysqld.cnf
以上mysql 配置完毕,在ubuntu还有些敏感操作受到了 apparmor.d 的限制,mysql也受到了限制,vi /etc/apparmor.d/usr.sbin.mysqld 将/var/lib/mysql 修改为/mnt/mysql/data
重新加载apparmor 和 启动mysql
service apparmor reload #不需要重启
service mysql start
如果没问题,这个时候已经修改成功了!
但是我在重新启动apparmor时报下列错误:
Job for apparmor.service failed because the control process exited with error code. See "systemctl status apparmor.service" and "journalctl -xe" for details.
输入systemctl status apparmor.service命令
可以看到是can’t open /lib/apparmor/function,意思就是说apparmor这个服务有问题,上网查了很久,也没有找到有效的办法,最后还是FQ找到了解决办法,下面给出传送门
https://answers.launchpad.net/ubuntu/+source/apparmor/+question/296095
这边文章说的是要重新安装apparmor
下面是安装命令
uname -a
lsb_release -crid
dpkg -l | grep apparmor
sudo apt-get install --reinstall apparmor
可以看到 service apparmor reload 成功
开启远程访问
一 开放mysql
mysql的配置文件在/etc/mysql/mysql.conf.d/mysqld.cnf文件内,里面有一行bind-address = 127.0.0.1表示只允许本地访问,将这行注释即可
# bind-address = 127.0.0.1
二 创建新的mysql用户
(1)首先在本地进入mysql数据库的mysql库内
use mysql;
(2)查看当前用户的情况
Select Host, User from mysql.user;
一共有3个mysql账号,Host列可以看出来,这些账号都只支持服务器本机连接,现在我们来创建一个远程用户;
create user 用户名 identified by '密码';
创建完成了,在程序里面连接发现还是没有权限,刚才我们只是创建了用户,还没有对这个用户分配权限;all代表接受所有操作,比如 select,insert,delete....; *.* 代表所有库下面的所有表;% 代表这个用户允许从任何地方登录;为了安全期间,这个%可以替换为你允许的ip地址;然后刷新mysql用户权限相关表;
退出mysql, 重启数据库
设置utf8编码格式
输入mysql -u root -p 命令,进入MySQL
输入 SHOW VARIABLES LIKE 'char%'; 查看MySQL编码,有两个不是utf8
方法一:
a.在终端中输入 vi /etc/mysql/mysql.conf.d/mysqld.cnf 命令
打开mysqld.cnf 文件,添加 character-set-server=utf8
b.在终端输入 vi /etc/mysql/conf.d/mysql.cnf 命令打开mysql.cnf配置文件,如图添加代码:default-character-set=utf8
方法二:在终端中输入 vi /etc/mysql/mysql.conf.d/mysqld.cnf 命令
打开mysqld.cnf 文件,添加
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
重启服务
输入 SHOW VARIABLES LIKE 'char%'; 命令 ,显示修改成功
到此,mysql安装成功,编码也改为utf-8,并且开启了远程访问