如果服务器已经安装过 MySQL,或者没有 root 权限,我们可以使用普通用户安装 MySQL。安装步骤如下 :
1、下载 MySQL 安装包,放到当前普通用户目录下解压。
[user@localhost ~]$ tar -zxvf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
[user@localhost ~]$ mv mysql-5.7.24-linux-glibc2.12-x86_64 mysql
2、编辑 my.cnf 配置文件,放在当前 MySQL 安装目录下,配置文件路径/home/user/mysql/my.cnf 。
[user@localhost ~]$ cd mysql
[user@localhost mysql]$ vi my.cnf
#添加以下内容
[client]
port=3336
socket=/home/mysql/mysql5.7/mysql.sock
[mysqld]
#服务端口号
port=3336
#mysql安装根目录
basedir=/home/mysql/mysql5.7
#mysql数据文件所在位置
datadir=/home/mysql/mysql5.7/data
#mysql进程文件
pid-file=/home/mysql/mysql5.7/mysql.pid
#设置socke文件所在目录
socket=/home/mysql/mysql5.7/mysql.sock
#数据库错误日志文件
log_error=/home/mysql/mysql5.7/error.log
server-id=100
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1
max_allowed_packet = 100M
innodb_log_file_size=300M
3、进入 MySQL 目录,开始安装 MySQL。
[user@localhost mysql]$ bin/mysqld --defaults-file=/home/user/mysql/my.cnf --initialize --user=user --basedir=/home/user/mysql --datadir=/home/user/mysql/data
#--defaults-file 指定配置文件
#--initialize 自动生成带随机密码的root用户
4、启动停止 MySQL
[user@localhost mysql]$ bin/mysqld_safe --defaults-file=/home/user/mysql/my.cnf --user=user &
[user@localhost mysql]$ bin/mysqladmin shutdown -u root -p -S /home/user/mysql/mysql.sock
#./mysqld_safe启动mysql会默认寻找/etc/my.cnf配置文件。普通用户没有权限,因此要通过--defaults-file指定我们自定义的配置文件
#bin/mysqld_safe: line 647: /var/log/mariadb/mariadb.log: No such file or directory
# 启动报错:mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user '2iuser'.bin/mysqld_safe: line 144: /var/log/mariadb/mariadb.log: No such file or directory
#当前系统中安装了mariadb,mariadb的配置文件路径/etc/my.cnf,mysql根据配置文件无法找到相关的文件,所以报错。
#查找mariadb,删除mariadb。
[user@localhost mysql]$ rpm -qa | grep mariadb
[user@localhost mysql]$ rpm -e mariadb-libs-5.5.56-2.el7.x86_64
5、在 error.log 文件中获取 root 用户密码。
[user@localhost mysql]$ cat error.log | grep root@localhost
6、安装完成,使用 root 用户登陆 MySQL。
[user@localhost mysql]$ bin/mysql -u root -p -S /home/user/mysql/mysql.sock
Enter password:
#如果不加-S登录时会报错 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
#其中一种解决方法是在命令行里指定sock文件即可登陆,由于本机已安装mysql数据库,sock文件在/tmp/mysql.sock已存在,所以建议这种方式登录,后续再想办法优化。
[user@localhost mysql]$ bin/mysql -u root -p -S /home/user/mysql/mysql.sock
#由于mysql是在路径/tmp/mysql.sock寻找sock文件,我们配置文件里指定的路径是/home/2iuser/mysql/mysql.sock,所以加上软连接即可。
[user@localhost mysql]$ ln -s /home/user/mysql/mysql.sock /tmp/mysql.sock
7、修改 root 密码。
mysql> set password=password('root');
Query OK, 0 rows affected, 1 warning (0.00 sec)
8、修改权限使远程客户端可以连接。
mysql> use mysql
Database changed
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
3 rows in set (0.00 sec)
mysql> grant all privileges on *.* to 'root'@'%' identified by 'root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+--------------
4 rows in set (0.00 sec)
9、loginAsRoot.sh
在 mysql5.7 目录下创建 loginAsRoot.sh,并赋予可执行权限 chmod +x loginAsRoot.sh
#!/bin/sh
bin/mysql -u root -p -S /home/mysql/mysql5.7/mysql.sock
10、mysql 启动停止脚本
- 第一步:在 mysql5.7 目录下创建 mysql(此处把.sh 去掉了),并赋予可执行权限
chmod +x mysql
#!/bin/sh
# chkconfig: 2345 90 10
# description: Mysql is a database
# 服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是10。优先级范围是0-100,数字越大,优先级越低
# 0:关机
# 1:单用户模式
# 2:无网络支持的多用户模式
# 3:有网络支持的多用户模式
# 4:保留,未使用
# 5:有网络支持有X-Window支持的多用户模式
# 6:重新引导系统,即重启
#开始方法
start() {
/home/mysql/mysql5.7/bin/mysqld_safe --defaults-file=/home/mysql/mysql5.7/my.cnf --user=mysql &
echo "$mysql started success."
}
#结束方法
stop() {
echo "stopping mysql ..."
/home/mysql/mysql5.7/bin/mysqladmin shutdown -u root -p -S /home/mysql/mysql5.7/mysql.sock
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Userage: $0 {start|stop|restart}"
exit 1
esac
- 第二步:将脚本添加到
/etc/rc.d/init.d/
下面
cp mysql /etc/rc.d/init.d/
- 第三步:将脚本添加到开机自启项目里
chkconfig --add mysql
使用chkconfig --list mysql 判断是否生效
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于