环境
1、系统版本:Ubuntu16.04 Linux 64位
2、数据库版本:二进制版本MySQL 8.0.13,下载地址:https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-i686.tar.xz
1、进入https://dev.mysql.com/downloads/mysql/,左菜单选择MySQL Community Server 然后右边选择Select Operating System:Linux Generic,因为我们是64位系统,所以选择第二个(查看当前版本是32位还是64位命令:uname -m 如果显示i686,你安装了32位操作系统,如果显示 x86_64,你安装了64位操作系统)
2、手动下载,然后通过xftp上传到 /usr/local目录
3、开始准备安装工作
a、MySQL依赖于libaio库。如果此库不在本地安装,则数据目录初始化和随后的服务器启动步骤将失败。如果需要,请使用适当的包管理器安装它。例如,基于云计算的系统:
hell> apt-cache search libaio # search for info
shell> apt-get install libaio1 # install library
b、 创建一个mysql用户和组:
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
c、 获取并解压分发包:
shell> cd /usr/local
shell> tar xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
d、 创建一个到tar创建的安装目录的符号链接:
shell> ln -s mysql-8.0.13-linux-glibc2.12-x86_64 mysql
e、 为了避免在使用MySQL时必须键入客户程序的路径名,可以将/usr/local/mysql/bin目录添加到路径变量:
shell> export PATH=$PATH:/usr/local/mysql/bin
f、 创建一个目录,其位置可以提供给secure_file_priv系统变量, 将目录的所有权授予mysql用户,将组的所有权授予mysql组,并为目录设置正确的权限 :
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files
g、 初始化数据目录,包括mysql数据库,其中包含确定用户如何被允许连接到服务器的初始mysql grant表,执行成功会有输出(A temporary password is generated for root@localhost: z+sSBqkDt1uq,后面是密码第一次登陆有用):
shell> bin/mysqld --initialize --user=mysql
数据目录的初始化可能会失败,因为系统中缺少一些必需的软件库。例如:
shell> bin/mysqld --initialize --user=mysql
bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory 那就需要先执行:
shell> bin/mysql_ssl_rsa_setup
下一个命令是可选的 :
shell> cp support-files/mysql.server /etc/init.d/mysql.server
4、启动数据库,并配置远程
a、开启服务&是后台运行的意思,执行命令之后,终端会卡在一个位置,再按一下Enter即可:
bin/mysqld_safe --user=mysql &
b、 使用用户root登录使用刚才随机生成的密码,即可计入数据库:
bin/mysql -uroot -p
c、更改root用户密码第一次使用随机登录并不能使用,因此我们需要更改密码,如下
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; flush privileges;
d、使root能远程登录、分两步必须的:
1、update user set host='%' where user = 'root'; #更改可以登录的IP为任意IP
2、 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; #再次更改root用户密码,使其可以在任意IP访问
3、最后再执行刷新语句: flush privileges; #刷新权限
e、如果创建新用户,并允许远程( mysql_native_password是加密方式,很关键,有了它 Navicat 才能连接):
1、CREATE USER '用户名'@'host名称' IDENTIFIED WITH mysql_native_password BY '密码';
2、 GRANT ALL PRIVILEGES ON *.* TO '用户名'@'host名称';
3、 FLUSH PRIVILEGES。