1. 下载安装包
进入 Mysql 官网: https://dev.mysql.com/downloads/mysql/
这里选择的是 5.7 Linux-Generic 版本
进入服务器目录: cd /usr/local
下载 tar 包: wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
2.安装
先解压下载好的文件:tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
然后重命名目录 mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
为 mysql 添加新的用户和用户组:
添加用户组: groupadd mysql
添加 mysql 用户到用户组 mysql: useradd -r -g mysql mysql
//添加完成后可用 id mysql 查看
添加完成后修改下文件的用户和用户组: cd mysql
chown -R mysql:mysql ./
初始化 mysql: bin/mysqld –-initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
这里需要把初始化最后生成的临时密码记录下来,等会登录的时候会用到。
初始化时候可能会报错:error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
原因:yum 安装的 libnuma.so.1,但安装时默认安装的是 32 的,但 db2 需要的是 64 位的
解决: 有的话先卸载试试:yum remove libnuma.so.1
然后安装:yum -y install numactl.x86_64
还有一种解决办法: 直接yum install -y libaio
,安装完成后初始化就 ok 了
初始化完成后执行以下命令创建 RSA private key: bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
然后修改当前目录拥有者为 mysql 用户: chown -R mysql:mysql ./
修改当前 data 目录拥有者为 mysql 用户: chown -R mysql:mysql data
配置 my.cnf: vi /etc/my.cnf
这里贴上内容:
[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
#不区分大小写 (sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 这个简单来说就是sql语句是否严格)
lower_case_table_names = 1
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/data/mysqld.pid
3.添加开机启动
复制脚本文件: cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
修改: vi /etc/init.d/mysqld
修改项:basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
设置文件为服务运行级别 chkconfig --add mysqld
设置为开机自启动: chkconfig mysqld on
额外说明:
查看 chkconfig 的管理:chkconfig --list
删除 chkconfig 上的 mysql 管理:chkconfig --del mysqld
关闭 mysql 服务自启动: chkconfig mysqld off
4. 测试结果
启动 mysql: service mysqld start
登录 mysql: mysql -u root -p
然后输入刚才的临时密码
报错:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
分析原因:无法通过 socket 文件/var/lib/mysql/mysql.sock 连接到 mysql 服务器,也就是说对于 mysql 程序来说,尽管在 my.cnf 里指定了 socket,但是对于 mysql 还是会从默认的安装目录/var/lib/mysql/里找这个 mysql.sock 文件,找不着,就不知道从哪里启动了。
解决: 做个软连接:ln -s /tmp/mysql.sock /var/lib/mysql/
报错:ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.
原因: 密码过期
解决: 用忽略授权表的方法进入 mysql:vi /etc/my.cnf
在最后添加:skip-grant-tables
保存后重启 mysql:service mysqld restart
然后进入 mysql 查看 root 用户的详细信息:mysql -uroot -p
进入 mysql 后:use mysql;
select * from mysql.user where user='root' \G
把 passwordexpired 改成不过期:update user set password_expired='N' where user='root';
刷新:flush privileges;
退出:quit
把 /etc/my.cnf 的 skip-grant-tables 这行去掉,,然后重启 mysql:service mysqld restart
再次登录就正常啦
进入后先修改下 root 用户密码: SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
4.远程访问 mysql
进入 mysql 后 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
即允许 root 用户在任何地方进行远程登录,并具有所有库任何操作权限;
刷新: FLUSH PRIVILEGES;
然后退出: quit
然后用 Navicat for mysql 连接,连接成功:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于