公司最新的项目用到了mysql 8,安装和部署在阿里云上,系统是centos7。最近这两年我的思路从网上搜索别人的文章,转变为以官网为主,查官网资料解决问题,以百度为最后一步,因为像mysql这么庞大的产品,和系统的关联很紧密,而且文档非常的复杂,所以前人踩过的坑值得借鉴。
contos7默认安装了mariadb数据库,这里把他移除:卸载yum remove mariadb-libs.x86_64
官网安装步骤:
依赖libaio,先安装 libaio
shell> yum search libaio
shell> yum install libaio
shell> groupadd mysql --设置mysql用户组
shell> useradd -r -g mysql -s /bin/false mysql --加入mysql用户
shell> cd /usr/local
shell> tar xvf /path/to/mysql-VERSION-OS.tar.xz --解压mysql到本路径
shell> ln -s full-path-to-mysql-VERSION-OS mysql --软连接
shell> cd mysql
shell> mkdir mysql-files
shell> chown mysql:mysql mysql-files
shell> chmod 750 mysql-files --权限,操作日志等
shell> bin/mysqld --initialize --user=mysql --初始化数据库,注意初始密码要记录下来
下面这两步是mysql的ssl认证方式,在我们使用中不需要这种方式,所以就不执行
shell> bin/mysql_ssl_rsa_setup
shell> bin/mysqld_safe --user=mysql &
注册server服务,使用服务命令启动
shell> cp support-files/mysql.server /etc/init.d/mysql.server
service mysqld start
官网中默认方式没有使用配置文件,我在/etc文件下看到my.cnf.rpmsave文件,复制为my.cnf 文件,里面可以修改data路径,log路径等。
创建用户
create user 'username'@'localhost' identified by 'password';
授权所有权限
grant all privileges on database_name.* to 'username'@'localhost';
刷新权限
flush privileges;
操作中遇到的问题:
- [root@iZbp198h7llwft78a5652vZ mysql]# bin/mysqld –-initialize -–user=mysql -–basedir=/usr/local/mysql –-datadir=/data/mysql
mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)
2019-12-12T11:35:44.584067Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2019-12-12T11:35:44.584193Z 0 [System] [MY-010116] [Server] /usr/local/src/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld (mysqld 8.0.18) starting as process 26921
2019-12-12T11:35:44.587294Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-12-12T11:35:44.587500Z 0 [System] [MY-010910] [Server] /usr/local/src/mysql-8.0.18-linux-glibc2.12-x86_64/bin/mysqld: Shutdown complete (mysqld 8.0.18) MySQL Community Server - GPL.
- /etc/my.cnf 下的log文件地址
inux下安装mysql连接的时候经常回提示说找不到mysql.sock文件,解决办法很简单:
如果是新安装的mysql,提示找不到文件,就搜索下,指定正确的位置
- [root@iZbp198h7llwft78a5652vZ support-files]# service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/iZbp198h7llwft78a5652vZ.pid).
这个问题折磨了很久,pid文件找不到,修改不了这个文件。新建一个pid文件,一运行命令就会删除此文件。最后发现是log文件夹的权限问题,设置为mysql组,750操作权限后就可以了。
- linux环境下报错bash: mysql: command not found 的解决方法
# mysql -u root
-bash: mysql: command not found
原因:这是由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。
首先得知道mysql命令或mysqladmin命令的完整路径,比如mysql的路径是:/usr/local/mysql/bin/mysql,我们则可以这样执行命令:
# ln -s /usr/local/mysql/bin/mysql /usr/bin
- 刚刚安装完成MYSQL,登录进去以后,什么操作都提示错误,ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
这是说明我们的初始密码时间过期了,重新改一下密码就行
alter user user() identified by "你的新密码";
总结:
根据官网的步骤来可以梳理清晰思路,每一步搞清楚是什么意思,遇到问题多查资料,多测试。