阿里云Linux系统中MySQL的安装与配置
下载、解压MySQL
本次安装配置使用mysql-5.7.30版本,运行环境为阿里云。提取码:47vr
将下载的mysql压缩安装文件上传到文件夹/usr/local/,解压缩至当前文件夹,如下:
[root@huzy local]# tar zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
修改解压后文件夹的名称为:mysql,这个名称个人爱好自定义的,因为解压出来的太复杂太长,不方便操作
[root@huzy mysql]# mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql
创建数据仓库
创建MySQL数据仓库文件路径
[root@huzy mysql]# mkdir /data/mysql
创建用户组和用户
创建一个mysql用户组
[root@huzy mysql]# groupadd mysql
在mysql用户组下面创建一个mysql用户
[root@huzy mysql]# useradd -r -g mysql mysql
添加mysql用户的数据仓库操作权限
[root@huzy mysql]# chown mysql:mysql -R /data/mysql
修改数据库配置
切换到根目录下的/etc目录,打开my.cnf文件,按i进入编辑模式
[root@huzy etc]# vim my.cnf
内容如下:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
添加bind-address、port和user,并修改安装目录、数据目录和相应的日志目录,如下:
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.log
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
初始化MySQL数据库
修改完成保存并退出,然后切换到mysql的安装目录的bin目录,初始化数据库(如果初始化错误,文后有解决方法)
[root@huzy /]# cd usr/local/mysql/mysql/bin
[root@huzy bin]# pwd
/usr/local/mysql/mysql/bin
[root@huzy bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
初始化运行完成后,会有一行这样的内容:
2020-09-09T06:20:31.051435Z 1 [Note] A temporary password is generated for root@localhost: .>952/Xw7/,0
对,你没看错,这就是自动生成的root用户密码:.>952/Xw7/,0,记住它,以后会用到
设置MySQL数据库开机启动
把mysql.server复制到/etc/init.d的目录中并更名为mysqld,如下:
[root@huzy bin]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
设置mysqld文件的执行权限
[root@huzy bin]# chmod +x /etc/init.d/mysqld
将mysqld添加到服务配置中
[root@huzy bin]# chkconfig --add mysqld
查看mysqld的服务状态,也有可能是英文
[root@huzy ~]# chkconfig --list
mysql 0:关 1:关 2:开 3:开 4:开 5:开 6:关
这里mysql已经默认开机启动啦,如果245的状态是关或者off,则要打开它,如下:
[root@huzy ~]# chkconfig --level 345 mysqld on
最后,重启一下服务器既可。
数据库的启停操作
试着启动MySQL啦!包括其他重启、关闭命令
[root@huzy /]# service mysql start
Starting MySQL. [ OK ]
[root@huzy /]# service mysql stop
Shutting down MySQL.. [ OK ]
[root@huzy /]# service mysql start
Starting MySQL. [ OK ]
[root@huzy /]# service mysql restart
Shutting down MySQL.. [ OK ]
Starting MySQL. [ OK ]
这样MySQL安装就已经成功了!
修改默认root账户密码
什么?root密码太复杂,人家系统生成的也是为了安全,但是自己用想改的简单一点,OK,盘它!
切换到mysq安装路径的bin目录,执行命令:
[root@huzy bin]# ./mysql -u root -p
Enter password:
这时候,数据库初始化是系统生成的密码就用到了,输入回车,成功进入mysql
注:这里的密码输入是看不到的,光标不移动,尽管输入即可
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
依次执行,mysql>后面的命令,如下:******代表要设置的新密码内容
mysql> SET PASSWORD = PASSWORD('******');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>
设置数据库远程连接
密码已经修改成功,但是这时候还是不能远程登录的,因为默认的只能localhost本机登录,我们还要修改一下root账号下的IP限制,如下:
先切换到mysql数据库,再修改root账户host值
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql>
这样,就可以远程的连接操作数据库,开始愉快的玩耍啦!
但是可能还有老铁依然连接不上,这时候要检查一下端口开放情况,先确定端口是否修改过,没有修改过默认就是:3306
查看端口是否开放:no-未开放;yes-已开放
[root@huzy bin]# firewall-cmd --query-port=3306/tcp
no
添加并开放指定3306端口:
[root@huzy bin]# firewall-cmd --add-port=3306/tcp --permanent
success
重新载入添加端口:
[root@huzy bin]# firewall-cmd --reload
success
再次查询3306端口状态:
[root@huzy bin]# firewall-cmd --query-port=3306/tcp
yes
OK,已开放,不出意外就可连接啦!
数据库初始化错误处理
数据库初始化错误处理
执行初始化后出现以下错误:
[root@huzy bin]# ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/software/ --datadir=/usr/local/mysql/data/ --user=mysql --initialize
./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
出现错误别着急,盘它,检查链接库文件是否已经安装使用:
[root@huzy bin]# rpm -qa|grep libaio
[root@huzy bin]#
经过检查无任何提示,那我们就自己动手安装
[root@huzy bin]# yum install libaio-devel.x86_64
安装完成后,再运行数据库初始化命令,OK!