作者升级mysql5.5到5.7后,遇到两个报错,开始填坑。
1. 启动mysql服务报错
执行 service mysqld start ,报错:
Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
1)查看日志,只看error
cat /var/log/mysqld.log
发现:
[ERROR] Can’t start server: Bind on TCP/IP port: Address already in use
[ERROR] Do you already have another mysqld server running on port: 3306
翻译:端口被占用,你是否已运行了其它的mysqld服务占用了3306
2)查看端口情况
netstat -apn | grep 3306
发现:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 7461/mysqld
解决:
kill 7461
service mysqld restart
2. 修改密码时报错
执行 set password for 'root'@'localhost' =password('root'); 报错:
ERROR 3009 (HY000): Column count of mysql.user is wrong. Expected 45, found 42. Created with MySQL 50568, now running 50737. Please use mysql_upgrade to fix this error.
1)因手动升级mysql后,数据结构发生变化,须通过指令升级
mysql> quit
mysql_upgrade
service mysqld restart
此时作者窗口返显:
Checking if update is needed.
Checking server version.
Running queries to upgrade MySQL server.
mysql_upgrade: (non fatal) [ERROR] 1728: Cannot load from mysql.proc. The table is probably corrupted
mysql_upgrade: (non fatal) [ERROR] 1545: Failed to open mysql.event
Checking system database.
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost OK
mysql.event OK
mysql.func OK
mysql.general_log OK
mysql.gtid_executed OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.host OK
mysql.innodb_index_stats OK
mysql.innodb_table_stats OK
mysql.ndb_binlog_index OK
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.server_cost OK
mysql.servers OK
mysql.slave_master_info OK
mysql.slave_relay_log_info OK
mysql.slave_worker_info OK
mysql.slow_log OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
Upgrading the sys schema.
Checking databases.
sys.sys_config OK
Upgrade process completed successfully.
Checking if update is needed.
2)初次安装mysql,登录数据库直接enter不用输密码
mysql -u root -p
# 直接按回车
mysql> set password for 'root'@'localhost' =password('root');
# 设置数据库用户root的密码为root
3)测试登录密码
mysql> exit
mysql -u root -p
Enter password:
# 输入root,并回车
# 登录成功!