Russia "launched an air strike on the International Centre for Peacekeeping and Security," the head of the Lviv regional administration, Maxim Kozitsky, said on his verified Facebook page.
"Unfortunately, we have 9 dead. 57 people were injured," Lviv's mayor, Andriy Sadoviy, wrote on Telegram.
Some of the injured have been taken to Lviv hospitals, he said.
The military base in Yavoriv, located some 40 kilometres (25 miles) northwest of the city, was a training centre for Ukrainian forces with foreign instructors, including from the United States and Canada.
It was also a hub for joint exercises of Ukrainians soldier with NATO allies.
Ukrainian Defence Minister Oleksiy Reznikov said "foreign instructors work here," although it was unclear whether any were present during the attacks.
Foreign troops left Ukraine shortly before Russian launched an invasion of its pro-Western neighbour on February 24.
The United States said on February 12 that it withdrew 150 of its instructors from Ukraine.
Reznikov condemned the bombardment as a "new terrorist attack on peace & security near the EU-NATO border", calling for the imposition of a no-fly zone.
"Action must be taken to stop this. Close the sky!" he wrote.
According to preliminary information, around 30 cruise missiles were fired from Russian planes located over the Black Sea, which had flown out from the southern Russian city of Saratov, Lviv's mayor said.
Ukraine's Air Force Command West said on Facebook two cruise missiles were destroyed by air defence systems.
They said the missiles were fired "probably from the waters of the Sea of Azov or the Black Sea".
Washington on Saturday authorised $200 million in additional military equipment for Ukraine.
Russia the same day warned that its troops could target supplies of Western weapons to Ukraine.
Many Ukrainians have fled to relative safety in Lviv since the launch of Russia's invasion.
A short drive from EU member Poland, the city is also a transit hub for those leaving Ukraine.
Separately, the mayor of Ivano-Frankivsk in western Ukraine said the city's airport was targeted in a strike.
"Our morning in Frankivsk began with explosions. This is already the third strike on Frankivsk. They hit the airport," mayor Ruslan Martsinkiv said on Facebook.
© Agence France-Presse