感觉自己装个mysql都好艰辛,搞完写个博客纪念一下
ECS版本:阿里云CentOS 6.9
一、下载和安装
分别下载server和client
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql80-community-el6/mysql-community-server-8.0.15-1.el6.x86_64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql80-community-el6/mysql-community-client-8.0.15-1.el6.x86_64.rpm
确认已安装否
# 确认mysql是否已安装
yum list installed mysql*
卸载旧版本后再安装
# 卸载旧版本的MySQL
rpm -qa | grep mysql
rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps
# 安装
rpm -ivh mysql-community-server-8.0.15-1.el6.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-client-8.0.15-1.el6.x86_64.rpm --nodeps --force
# (-ivh :安装显示安装进度--install--verbose--hash)
# 配置文件:/etc/my.cnf
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
二、初始化
# 配置信息查看
cat /etc/my.cnf
# (注:windows下修改的是my.ini)
# 启动mysql服务操作四连
service mysqld restart
service mysqld start
service mysqld stop
service mysqld status
1、服务端启动报错
See “systemctl status mysqld.service”
- 暴力解决:卸载,删除所有mysql相关的配置文件
find / -name '*mysql*'
- 异常1——libaio 未安装
– Unit mysqld.service has begun starting up.
Mar 30 13:45:37 boyideyt mysqld[20983]: Initializing MySQL database: /usr/sbin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
Mar 30 13:45:37 boyideyt mysqld[20983]: [FAILED]
Mar 30 13:45:37 boyideyt systemd[1]: mysqld.service: control process exited, code=exited status=127
Mar 30 13:45:37 boyideyt systemd[1]: Failed to start SYSV: MySQL database server…
解决:
出现该问题首先检查该链接库文件有没有安装使用 命令进行核查
rpm -qa|grep libaio
运行该命令后发现系统中无该链接库文件
使用命令,yum install libaio-devel.x86_64
- 异常2 找不到errmsg.sys
2019-03-30T06:52:28.371374Z 0 [ERROR] [MY-010338] [Server] Can’t find error-message file ‘/usr/share/mysql-8.0/errmsg.sys’. Check error-message file location and ‘lc-messages-dir’ configuration directive.
So I found where the error messages where:
find / -name errmsg.sys
Can’t read from messagefile ‘/usr/share/mysql-8.0/errmsg.sys’
解决:
4. 异常3
Unable to lock ./ibdata1 error: 11
解决:
ps aux |grep mysql*
杀死已有的mysql进程
2、修改初始密码
网上搜到的查看临时密码的方法
#查看临时密码
sudo grep 'temporary password' /var/log/mysqld.log
然而我的这个临时密码不知道为什么不管用,我就用了免密登录的方法,在/etc/my.cnf中加一行skip-grant-tables。加完一定要重启mysql服务。
# 进入mysql
shell> mysql -uroot -p
进去后可以查看一下密码
use mysql;
-- authentication_string: 用户密码;在mysql 5.7.9以后废弃了password字段和password()函数;
mysql> select host, user, authentication_string, plugin from user;
字段信息:
- host: 允许用户登录的ip‘位置’%表示可以远程;
- user:当前数据库的用户名;
- authentication_string: 用户密码;在mysql 5.7.9以后废弃了password字段和password()函数;
- plugin: 密码加密方式;
看到当前root用户authentication_string字段下有内容,先将其设置为空;
use mysql;
update user set authentication_string='' where user='root';
root的authentication_string字段置为空后,退出去,把/etc/my.cnf中的skip-grant-tables去掉,重启mysql服务。
mysql -u root -p
passwrod:直接回车;
这会再进mysql,mysql会提醒你修改你的密码,使用ALTER USER “root”@“localhost” IDENTIFIED BY “你的新密码”;
--密码一定要复杂
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
至此修改成功; 新用户名密码记好。
三、远程连接
ECS的安全组加3306端口入规则,修改后用workbench连接报没有权限(mysql服务正在运行时)
1.登录MySQL
mysql -u root -p
输入您的密码
2.选择 mysql 数据库
use mysql;
因为 mysql 数据库中存储了用户信息的 user 表。
3.在 mysql 数据库的 user 表中查看当前 root 用户的相关信息
select host, user, authentication_string, plugin from user;
执行完上面的命令后会显示一个表格
查看表格中 root 用户的 host,默认应该显示的 localhost,只支持本地访问,不允许远程访问。
4.授权 root 用户的所有权限并设置远程访问
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'new_Password';
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'new_Password';
-- 设置为远程登录
mysql> GRANT ALL ON *.* TO 'root'@'%';
GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。
5.刷新权限
所有操作后,应执行
mysql> flush privileges;
6.查看 root 用户的 host
再次执行步骤 2,你会发现 root 用户的 host 已经变成 %,说明我们的修改已经成功,可以远程访问了。
测试连接,成功。经过了一整个下午的折腾,我终于可以配置我的hive元数据了 (T T)