搜集了MYSQL的各种安装方式,还有版本不同带来的问题会发现在 Mac 或者 在linux上安装5.7 一下版本时出现的问题会少很多,尤其是拿着 dmg文件在Mac 安装 就是1分钟的事,但是在linux 安装 5.7时出现了不少的问题,出现的问题各式各样,大家安装时碰到问题了,一定要找你当前版本下的解决方式。严格按照本文步骤可以顺利安装,这也是我连续在 三台linux服务器安装后的精简版(需要yum安装版本的可以点击另外一篇文章访问地址)
rpm -qa|grep -i mysql
输出:
rpm -ev mysql-community-libs-5.7.26-1.el6.x86_64
rpm -ev mysql-community-server-5.7.26-1.el6.x86_64
rpm -ev mysql-community-client-5.7.26-1.el6.x86_64
rpm -ev mysql-community-common-5.7.26-1.el6.x86_64
rpm -ev mysql-community-libs-5.7.26-1.el6.x86_64 --nodeps
rpm -ev mysql-community-server-5.7.26-1.el6.x86_64 --nodeps
rpm -ev mysql-community-client-5.7.26-1.el6.x86_64 --nodeps
rpm -ev mysql-community-common-5.7.26-1.el6.x86_64 --nodeps
find / -name mysql
rm -rf 对应的mysql*
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
tar -xvf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.29-linux-glibc2.12-x86_64 /usr/local/MySQL_5.7.29
想弄软连接命令(小白慎用):
ln -s mysql-5.7.29-linux-glibc2.12-x86_64/ MySQL_5.7.29
groupadd mysql
useradd -r -g mysql mysql
cd /usr/local/MySQL5.7.29
mkdir mysql_data
mkdir mysql_log
mkdir mysql_pid
chown mysql:mysql -R /MySQL_5.7.29
没有下载vim的用vi
vim /etc/my.cnf
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/MySQL_5.7.29
datadir=/usr/local/MySQL_5.7.29/mysql_data
socket=/tmp/mysql.sock
log-error=/usr/local/MySQL_5.7.29/mysql_log/mysql.err
pid-file=/usr/local/MySQL_5.7.29/mysql_pid/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
cd /usr/local/MySQL_5.7.29/bin
执行以下命令
./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/MySQL_5.7.29/ --datadir=/usr/local/MySQL_5.7.29/mysql_data --user=mysql --initialize
若出现以下错误删除之前的mysql_data文件(rm -rf /usr/local/MySQL_5.7.29/mysql_data)
继续执行上面的代码
grep 'temporary password' /usr/local/MySQL_5.7.29/mysql_log/mysql.err
13.设置开机自启动服务控制脚本:(将{MySQL5.7.29}/ support-files/mysql.server 拷贝为/etc/init.d/mysqld并设置运行权限)
[root@localhost MySQL5.7.29]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost MySQL5.7.29]# chmod +x /etc/rc.d/init.d/mysqld
[root@localhost MySQL5.7.29]# chkconfig --add mysqld
[root@localhost MySQL5.7.29]# chkconfig --list mysqld
# systemctl start mysqld //开启 MySQL Server
# systemctl status mysqld //查看 MySQL Server 状态
# systemctl stop mysqld //关闭 MySQL Server
# mysql //进入mysql命令行界面
//打开 iptables 的配置文件:
# vim /etc/sysconfig/iptables
//如果该 iptables 配置文件 不存在,先执行
# yum install iptables-services //安装。
//iptables文件中添加以下内容
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3306/udp
//执行
# firewall-cmd --reload //重启防火墙,使最新的防火墙设置规则生效。
//mysql安全设置,服务器启动后,可以执行
# mysql_secure_installation;
配置问题
启动mysql 报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
1.先查看mysql启动状态 /etc/rc.d/init.d/mysqld status
2.mysql.sock位置查找与验证?find / -name mysql.sock
/tmp/mysql.sock 验证目录是否正确
mysql -u root -p -S tmp/mysql.sock
备注:-S参数socket file文件验证
3.验证mysql.sock文件权限和用户是否正确?
如果是权限问题,则先改变权限
#chown -R mysql:mysql /tmp/mysql.sock
[root@localhost ~]# /etc/init.d/mysqld start
启动 MySQL: [ OK]
4.永久解决 修改/etc/my.cnf
添加以下内容到/etc/my.conf:
[client]
socket = tmp/mysql.sock
[mysqld]
socket = /tmp/mysql.sock
MySQL账号设置
//创建一个普通用户 user ,密码是 user
mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'user';
//给这个用户授予 SELECT,INSERT,UPDATE,DELETE 的远程访问的权限,这个账号一般用于提供给实施的系统访问
mysql> GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'user'@'%';
//创建一个管理员用户 admin 账号 ,密码是 some_pass
mysql> CREATE USER 'admin'@'%' IDENTIFIED BY 'admin';
//给这个用户授予所有的远程访问的权限。这个用户主要用于管理整个数据库、备份、还原等操作。
mysql> GRANT ALL ON *.* TO 'admin'@'%';
//使授权立刻生效
mysql> flush privileges;
开机启动MySQL设置
# systemctl is-enabled mysqld.service;echo $?
//如果是 enabled 则说明是开机自动,如果不是,执行
# chkconfig --levels 235 mysqld on
设置MySQL UTF-8编码
# vim /etc/my.cnf
//修改内容如下
[mysqld]
character_set_server = utf8
[mysql]
default-character-set = utf8
//查看当前 MySQL 字符集进入mysql
#mysql> SHOW VARIABLES LIKE 'character%';
#mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
---------------------
修改MySQL密码可以直接登录的小伙伴,直接设置密码即可
mysql>set password for 'root'@'localhost'=password('newpasswd');
无法直接登录的小伙伴,参考一下步骤
//获取MySQL的临时密码, 只有启动过一次mysql才可以查看临时密码
# grep 'temporary password' /var/log/mysqld.log
//登陆并修改密码
# mysql -uroot -p
//修改密码
# ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
//密码设置太简单出现以下的提示
ERROR 1819 (HY000): Your password …
//首先,修改validate_password_policy参数的值
mysql> set global validate_password_policy=0;
//再修改密码的长度
mysql> set global validate_password_policy=0;
//再次执行修改密码就可以了
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
//授权其他机器登陆
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;