/etc/init.d/mysql

Since you've installed MySQL from source, you'll need to create a custom init script to manage the MySQL server (start, stop, status) similarly to a service. Here's a simple init.d script template for MySQL that you can use. This script assumes MySQL is installed in /usr/local/mysql and uses the mysql user.

1. Create the Init Script

Create a new script file in /etc/init.d/:

bash 复制代码
sudo vim /etc/init.d/mysql

2. Copy the Script Template

Paste the following content into the file:

bash 复制代码
#!/bin/bash
### BEGIN INIT INFO
# Provides:          mysql
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: MySQL Server
# Description:       MySQL Server
### END INIT INFO

# MySQL installation directory
basedir=/usr/local/mysql
# MySQL data directory
datadir=/usr/local/mysql/data
# MySQL binary path
mysqld=${basedir}/bin/mysqld
mysqladmin=${basedir}/bin/mysqladmin
# MySQL user
mysql_user=mysql
# MySQL root user for shutdown (update with correct root password)
mysql_root_password='root_password'

# Process ID file location
pidfile=${datadir}/mysqld.pid
# Log file
logfile=${datadir}/mysql.log

start_mysql() {
    echo "Starting MySQL server..."
    sudo -u $mysql_user $mysqld --user=$mysql_user --pid-file=$pidfile --log-error=$logfile --explicit_defaults_for_timestamp &
    echo "MySQL started."
}

stop_mysql() {
    echo "Stopping MySQL server..."
    sudo -u $mysql_user $mysqladmin -u root -p"$mysql_root_password" shutdown
    echo "MySQL stopped."
}

status_mysql() {
    if [ -f $pidfile ]; then
        echo "MySQL is running (PID: $(cat $pidfile))."
    else
        echo "MySQL is not running."
    fi
}

case "$1" in
    start)
        start_mysql
        ;;
    stop)
        stop_mysql
        ;;
    status)
        status_mysql
        ;;
    restart)
        stop_mysql
        start_mysql
        ;;
    *)
        echo "Usage: /etc/init.d/mysql {start|stop|status|restart}"
        exit 1
        ;;
esac

exit 0

3. Adjust Configuration

  • MySQL Root Password:

    Update the mysql_root_password variable with the actual root password of your MySQL installation. If you don't want to hardcode the password, you can be prompted for it or use sudo without password, but it's less convenient.

  • Paths:

    Ensure the basedir and datadir paths are correct. Adjust them if your MySQL installation or data directory is in a different location.

4. Set Permissions

Make the script executable:

bash 复制代码
sudo chmod +x /etc/init.d/mysql

5. Enable the Script

To enable the script to start at boot, use the following command:

bash 复制代码
sudo update-rc.d mysql defaults

6. Managing MySQL

Now you can manage MySQL using the init script:

  • Start MySQL:

    bash 复制代码
    sudo /etc/init.d/mysql start
  • Stop MySQL:

    bash 复制代码
    sudo /etc/init.d/mysql stop
  • Check MySQL status:

    bash 复制代码
    sudo /etc/init.d/mysql status
  • Restart MySQL:

    bash 复制代码
    sudo /etc/init.d/mysql restart

This script should work for basic management of your MySQL server.

When the initial root password for MySQL is expired, you'll need to change it before you can perform any other operations. Here are the steps to update the expired password:

1. Log In to MySQL with the Expired Password

Use the --connect-expired-password option to log in as root with the expired password:

bash 复制代码
/usr/local/mysql/bin/mysql -u root -p --connect-expired-password

Enter the expired password ,wmdGF>ju3!d when prompted.

2. Change the Root Password

After logging in, change the password using the ALTER USER statement:

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPassword';

Replace 'NewStrongPassword' with your new desired password. Make sure it meets MySQL's password policy requirements (minimum length, mix of letters, numbers, special characters, etc.).

3. Flush Privileges

If required, you can flush the privileges to ensure the changes take effect immediately:

sql 复制代码
FLUSH PRIVILEGES;

4. Exit MySQL

Exit the MySQL command-line interface:

sql 复制代码
EXIT;

5. Verify the New Password

Log in again using the new password to verify that it has been updated successfully:

bash 复制代码
/usr/local/mysql/bin/mysql -u root -p

Enter your new password when prompted.

This process should update your expired MySQL root password successfully.

相关推荐
Decay__12 小时前
VMware 安装 SQL Server 双节点 AlwaysOn 可用性组教程 —— WSFC、AG 与侦听器完整部署(系列核心篇)
运维·数据库·sql·mysql·架构
小此方18 小时前
Re:Mysql数据库基础篇(十二):什么是事务、事务解决了什么问题、事务的四大属性、事务的操作方式
数据库·mysql
csdn_aspnet18 小时前
macOS 10 、Docker 玩轉 MySQL
运维·mysql·macos·docker·容器·mac
王中阳Go19 小时前
100 件货卖出 116 件,库存停在 -16
后端·mysql·go
nice_lcj5201 天前
MySQL 存储引擎入门:InnoDB 和 MyISAM 到底怎么选
java·数据库·mysql·面试·innodb·存储引擎·myisam
xixingzhe21 天前
mysql全量、增量备份
数据库·mysql
隔窗听雨眠1 天前
MySQL三表JOIN执行内核与优化器决策机制
数据库·mysql·sql优化
Decay__1 天前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
星恒随风2 天前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
隔窗听雨眠2 天前
MySQL进程卡死的定位思路与恢复实践
mysql·故障排查·数据库运维