从一滴水开始 的个人博客

纵有疾风起,人生不言弃

Open Source, Open Mind,
Open Sight, Open Future!
  menu
20 文章
8821 浏览
0 当前访客
ღゝ◡╹)ノ❤️

Linux普通用户安装mysql

如果服务器已经安装过 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 判断是否生效

标题:Linux普通用户安装mysql
作者:从一滴水开始
地址:http://blog.lizhenhua.fun/articles/2019/10/19/1571467219950.html